# CiviCRM 4.7.28 Released December 6, 2017 - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** - **[Feedback](#feedback)** ## Synopsis | *Does this version...?* | | |:----------------------------------------------------------- |:-------:| | Fix security vulnerabilities? | | | **Change the database schema?** | **yes** | | **Alter the API?** | **yes** | | Require attention to configuration options? | | | Fix problems installing or upgrading to a previous version? | | | **Introduce features?** | **yes** | | **Fix bugs?** | **yes** | ## Features ### Core CiviCRM - **[CRM-16243](https://issues.civicrm.org/jira/browse/CRM-16243) Dependency management for extensions ([11173](https://github.com/civicrm/civicrm-core/pull/11173) and [11101](https://github.com/civicrm/civicrm-core/pull/11101))** Extensions can now specify other extensions they depend on. When enabling an extension, the requisite extensions will be automatically enabled first. However, for now at least, this does not automatically download those extensions. - **[CRM-20769](https://issues.civicrm.org/jira/browse/CRM-20769) Allow for Button Text on profiles to be overriden in settings ([10557](https://github.com/civicrm/civicrm-core/pull/10557))** You can now enter custom labels for the Save and Cancel buttons on profiles in Create or Edit modes. - **[CRM-21322](https://issues.civicrm.org/jira/browse/CRM-21322) create hook to modify entityRef fields ([11192](https://github.com/civicrm/civicrm-core/pull/11192))** A [new hook](https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_alterEntityRefParams/) allows extension developers to modify the parameters for entity reference fields that appear in a form. - **[CRM-21195](https://issues.civicrm.org/jira/browse/CRM-21195) Adding the ability to add icons to menu items ([11054](https://github.com/civicrm/civicrm-core/pull/11054)) (follow-up work)** This offers a slight adjustment to the markup for menu item icons. - **[CRM-21262](https://issues.civicrm.org/jira/browse/CRM-21262) Add a check for incorrect Resource URL ([11067](https://github.com/civicrm/civicrm-core/pull/11067))** A message will now appear on the Status Report if a site's CiviCRM Resource URL is set incorrectly. - **[CRM-20903](https://issues.civicrm.org/jira/browse/CRM-20903) Improve ordering of dedupe rules ([11109](https://github.com/civicrm/civicrm-core/pull/11109) and [11098](https://github.com/civicrm/civicrm-core/pull/11098))** Duplicate matching rules are now displayed in a consistent order: first the supervised and unsupervised rules, and then the general use rules in alphabetical order by title. - **[CRM-20304](https://issues.civicrm.org/jira/browse/CRM-20304) Add option to alphabetize option values ([11045](https://github.com/civicrm/civicrm-core/pull/11045))** Custom field options can now be alphabetized in one click. - **[CRM-21179](https://issues.civicrm.org/jira/browse/CRM-21179) Dashlet - Charts ([11005](https://github.com/civicrm/civicrm-core/pull/11005)) (preliminary work)** CiviCRM now ships with the dc.js, d3.js, and crossfilter.js libraries. These historically have been provided by the Civisualize extension, but they are now available for report developers who don't want the full set of Civisualize features. - **[CRM-21122](https://issues.civicrm.org/jira/browse/CRM-21122) Support selection of smart groups on Contact Dashboard ([10925](https://github.com/civicrm/civicrm-core/pull/10925))** Smart Groups with Public Pages visibility are now available for users to join them through the User Dashboard. - **[CRM-21379](https://issues.civicrm.org/jira/browse/CRM-21379) Fix Activity dashlet issues ([11221](https://github.com/civicrm/civicrm-core/pull/11221))** The Activities dashlet now has the option to display all activities regardless of status. The default is the legacy behavior of only displaying scheduled activities. Legacy users should note that the default order is reversed, with the newest activities displayed first. ### CiviCase - **[CRM-20078](https://issues.civicrm.org/jira/browse/CRM-20078) Activity card - General ([11159](https://github.com/civicrm/civicrm-core/pull/11159))** The "File on case" button is improved so that it does not appear when an activity is being viewed in the context of a case. In addition, when using "File on case", the case defaults to an open case for the activity target contact if one is available. ### CiviContribute - **[CRM-20868](https://issues.civicrm.org/jira/browse/CRM-20868), [CRM-21480](https://issues.civicrm.org/jira/browse/CRM-21480), and [CRM-21479](https://issues.civicrm.org/jira/browse/CRM-21479) set invoice_number at contribution->create, not invoice creation ([10681](https://github.com/civicrm/civicrm-core/pull/10681), [11341](https://github.com/civicrm/civicrm-core/pull/11341), and [11321](https://github.com/civicrm/civicrm-core/pull/11321))** Every contribution now comes with an invoice number regardless of whether an invoice has been generated. - **[CRM-21354](https://issues.civicrm.org/jira/browse/CRM-21354) Allow "Advanced Search" to search for recurring contribution status ([11080](https://github.com/civicrm/civicrm-core/pull/11080))** Recurring contribution status is now searchable in Advanced Search. - **[CRM-21346](https://issues.civicrm.org/jira/browse/CRM-21346) Make pledge installment count & amount exportable ([11194](https://github.com/civicrm/civicrm-core/pull/11194))** The number of installments and original installment amount fields for pledges are now exportable from the pledge search. - **[CRM-21287](https://issues.civicrm.org/jira/browse/CRM-21287) Add Financial Type to "Contributions by Household" report ([11106](https://github.com/civicrm/civicrm-core/pull/11106))** The "Contributions by Household" report now has the option to display and/or filter by financial type. ### CiviMail - **[CRM-20919](https://issues.civicrm.org/jira/browse/CRM-20919) Adjust Mailing.create api for creating Completed mailings ([10707](https://github.com/civicrm/civicrm-core/pull/10707))** Completed mailings can now be imported via the API. - **[CRM-21231](https://issues.civicrm.org/jira/browse/CRM-21231) On CiviMail screen make 'Review and Schedule' tab active if required fields are filled ([11035](https://github.com/civicrm/civicrm-core/pull/11035))** When composing a message in CiviMail, the second tab, "Review and Schedule", is disabled at first. Now, the tab link becomes active when the first tab is complete. - **[CRM-21282](https://issues.civicrm.org/jira/browse/CRM-21282) Improve ordering of CiviMail click reporting ([11099](https://github.com/civicrm/civicrm-core/pull/11099))** The click report summary now orders links by the descending number of clicks. ### Drupal Integration Modules - **[CRM-21297](https://issues.civicrm.org/jira/browse/CRM-21297) Automatically fill database details in installer for Drupal ([11113](https://github.com/civicrm/civicrm-core/pull/11113))** The database connection fields when installing CiviCRM on Drupal now default to the CMS database connection details. This matches the process on WordPress. ## Bugs resolved ### CiviMail - **[CRM-21335](https://issues.civicrm.org/jira/browse/CRM-21335) CiviMail recipient field isn't marked as required ([11185](https://github.com/civicrm/civicrm-core/pull/11185))** - **[CRM-21508](https://issues.civicrm.org/jira/browse/CRM-21508) civicrm_mailing.created_date information passed to Doctor When is incorrect ([11361](https://github.com/civicrm/civicrm-core/pull/11361))** The mailing date would default to the current timestamp when null. - **[CRM-21411](https://issues.civicrm.org/jira/browse/CRM-21411) When Sending a CiviMail from an advanced search no unsubscribe group field shows ([11258](https://github.com/civicrm/civicrm-core/pull/11258))** - **[CRM-21284](https://issues.civicrm.org/jira/browse/CRM-21284) Outdated link to mail setup documentation ([11104](https://github.com/civicrm/civicrm-core/pull/11104))** ### Core CiviCRM - **[CRM-21275](https://issues.civicrm.org/jira/browse/CRM-21275) Fatal error without message should recommend bug-reporting page, instead of deprecated forum ([11084](https://github.com/civicrm/civicrm-core/pull/11084))** - **[CRM-21336](https://issues.civicrm.org/jira/browse/CRM-21336) Custom file fields should display file name without hash ([11166](https://github.com/civicrm/civicrm-core/pull/11166))** - **[CRM-21268](https://issues.civicrm.org/jira/browse/CRM-21268) Missing French overseas departments. ([11076](https://github.com/civicrm/civicrm-core/pull/11076))** The French overseas departments Wallis-et-Futuna and Nouvelle-Calédonie are now available in the State/Province list. - **[CRM-21481](https://issues.civicrm.org/jira/browse/CRM-21481) 4.7.28-rc: needs to call rebuildMultilingualSchema() ([11322](https://github.com/civicrm/civicrm-core/pull/11322))** The introduction of multilingual columns means that the multilingual schema must be rebuilt. Otherwise, multilingual sites will encounter an error when upgrading. - **[CRM-21363](https://issues.civicrm.org/jira/browse/CRM-21363) and [CRM-21455](https://issues.civicrm.org/jira/browse/CRM-21455) Ensure that tests run using ONLY_FULL_GROUP_BY sql_mode for mysql 5.7 ([11249](https://github.com/civicrm/civicrm-core/pull/11249), [10934](https://github.com/civicrm/civicrm-core/pull/10934), [11339](https://github.com/civicrm/civicrm-core/pull/11339), and [11346](https://github.com/civicrm/civicrm-core/pull/11346))** - **[CRM-21364](https://issues.civicrm.org/jira/browse/CRM-21364) Fix Tests which fail on ONLY_FULL_GROUP_BY ([11229](https://github.com/civicrm/civicrm-core/pull/11229), [11219](https://github.com/civicrm/civicrm-core/pull/11219), and [11209](https://github.com/civicrm/civicrm-core/pull/11209))** This resolves a variety of problems that may occur if the MySQL `sql_mode` is set to `ONLY_FULL_GROUP_BY`. - **[CRM-21388](https://issues.civicrm.org/jira/browse/CRM-21388) Extension Page should only throw exception if key is set ([11234](https://github.com/civicrm/civicrm-core/pull/11234))** When checking that an extension's key follows the expected standard, the extension page should not throw an exception if the key is blank or missing. - **[CRM-20934](https://issues.civicrm.org/jira/browse/CRM-20934) Child groups not present in group list selector ([10717](https://github.com/civicrm/civicrm-core/pull/10717))** This resolves a problem where having a disabled parent group would prevent a group from appearing in a group selection field even if another parent group is active. - **[CRM-21351](https://issues.civicrm.org/jira/browse/CRM-21351) Contact deceased date does not respect the localisation date format ([11200](https://github.com/civicrm/civicrm-core/pull/11200))** - **[CRM-21306](https://issues.civicrm.org/jira/browse/CRM-21306) DoctorWhen extension looses the comments from columns when converting ([11129](https://github.com/civicrm/civicrm-core/pull/11129))** When replacing columns to resolve date fields, Doctor When now restores the field comments to the database. - **[CRM-21337](https://issues.civicrm.org/jira/browse/CRM-21337) ISO compliance for Romanian and Bulgarian counties ([11168](https://github.com/civicrm/civicrm-core/pull/11168))** This fixes the spelling of a Bulgarian province and a number of Romanian counties in the state/province list. - **[CRM-21267](https://issues.civicrm.org/jira/browse/CRM-21267) Error 500 - Call to undefined method CRM_Contact_Import_Parser::formatCustomDate ([11124](https://github.com/civicrm/civicrm-core/pull/11124))** Some code reorganization resulted in a method being called from within the wrong class during import of custom date fields, resulting in a fatal error. This calls it correctly. - **Navigation - Fix serialization error ([11107](https://github.com/civicrm/civicrm-core/pull/11107))** - **[CRM-19346](https://issues.civicrm.org/jira/browse/CRM-19346) gender_id uniqueness not enforced on option groups edit form ([11089](https://github.com/civicrm/civicrm-core/pull/11089))** Now each value in an option group must be unique. - **[CRM-21214](https://issues.civicrm.org/jira/browse/CRM-21214) Chaining shared addresses doesn't work correctly ([11019](https://github.com/civicrm/civicrm-core/pull/11019))** This prevents complex address inheritance cases such as second-degree address sharing and recursive address sharing. - **[CRM-20779](https://issues.civicrm.org/jira/browse/CRM-20779) Incorrect files showing in Tab for custom field ([11082](https://github.com/civicrm/civicrm-core/pull/11082))** On file custom fields in multiple-entry custom data sets, the first entry's file would display for all entries. - **[CRM-20468](https://issues.civicrm.org/jira/browse/CRM-20468) Attachment.create API HTML escapes the uploaded content ([10876](https://github.com/civicrm/civicrm-core/pull/10876))** - **Hw 390 fixed iframe popup ([11075](https://github.com/civicrm/civicrm-core/pull/11075))** - **[CRM-20892](https://issues.civicrm.org/jira/browse/CRM-20892) Same mailing open in two windows can overwrite data on scheduled mailings ([10965](https://github.com/civicrm/civicrm-core/pull/10965))** - **HW-380: Remove spacer div ([11071](https://github.com/civicrm/civicrm-core/pull/11071))** - **Civilint views components files ([482](https://github.com/civicrm/civicrm-drupal/pull/482))** - **Civilint 2nd half of civicrm_handler_field files ([486](https://github.com/civicrm/civicrm-drupal/pull/486))** - **Run civilint against civicrm_handler_filter_state_multi.inc ([488](https://github.com/civicrm/civicrm-drupal/pull/488))** - **Run Civilint against civicrm_engage module ([493](https://github.com/civicrm/civicrm-drupal/pull/493))** - **Run Civilint against the rest of views_handler and views plugin files ([487](https://github.com/civicrm/civicrm-drupal/pull/487))** - **Need to include fields in order by in select distinct to work ([494](https://github.com/civicrm/civicrm-drupal/pull/494))** - **Enable CiviCRM Extensions to interact with the WordPress shortcode ([112](https://github.com/civicrm/civicrm-wordpress/pull/112))** ### NYSS - **[CRM-21362](https://issues.civicrm.org/jira/browse/CRM-21362) Mailing summary report group by MySQL 5.7 error ([11206](https://github.com/civicrm/civicrm-core/pull/11206))** ### CiviMember - **[CRM-21321](https://issues.civicrm.org/jira/browse/CRM-21321) Membership fields not loading in 'On behalf of' profile ([11148](https://github.com/civicrm/civicrm-core/pull/11148))** You can now add membership fields to the profile for contributions on behalf of an organization, and they will display in the on-behalf section of the contribution page. - **[CRM-20227](https://issues.civicrm.org/jira/browse/CRM-20227) Regression - Membership status override gets 'stuck' ([11188](https://github.com/civicrm/civicrm-core/pull/11188))** - **[CRM-20955](https://issues.civicrm.org/jira/browse/CRM-20955) Contact's second membership fails to inherit when created in back end using price set ([11184](https://github.com/civicrm/civicrm-core/pull/11184))** - **[CRM-19998](https://issues.civicrm.org/jira/browse/CRM-19998) Membership start / end date have no effect in Search Builder ([11134](https://github.com/civicrm/civicrm-core/pull/11134))** - **[CRM-20432](https://issues.civicrm.org/jira/browse/CRM-20432) CIVICRM-221 Pending Contributions which have a Payment recorded and are Completed do not trigger the related Membership to become current, status remains pending ([11125](https://github.com/civicrm/civicrm-core/pull/11125))** ### WordPress Integration - **[CRM-21212](https://issues.civicrm.org/jira/browse/CRM-21212) Get E2E Tests working on wordpress ([11017](https://github.com/civicrm/civicrm-core/pull/11017))** ### CiviCase - **[CRM-21367](https://issues.civicrm.org/jira/browse/CRM-21367) Get help section out of container ([11096](https://github.com/civicrm/civicrm-core/pull/11096), [11156](https://github.com/civicrm/civicrm-core/pull/11156), and [11220](https://github.com/civicrm/civicrm-core/pull/11220))** Help text on the case types screens is now outside of the CiviCRM content block. - **[CRM-21373](https://issues.civicrm.org/jira/browse/CRM-21373) Notice error on creating cases ([11217](https://github.com/civicrm/civicrm-core/pull/11217))** This resolves a PHP notice that would appear upon creating a case. - **[CRM-21255](https://issues.civicrm.org/jira/browse/CRM-21255) Error when downloading document from case activity ([11186](https://github.com/civicrm/civicrm-core/pull/11186))** This resolves a bug in CiviCase 5.0 (org.civicrm.civicase) when printing a case document. ### CiviContribute - **[CRM-21062](https://issues.civicrm.org/jira/browse/CRM-21062) Remove Tax Rate trailing zeros for display in Confirm / Thankyou forms ([10856](https://github.com/civicrm/civicrm-core/pull/10856))** This resolves a bug where tax rates would always display 8 decimal places on contribution page confirmation and thank-you pages. - **[CRM-21436](https://issues.civicrm.org/jira/browse/CRM-21436) Fatal error on contribution page with only pay later enabled. ([11286](https://github.com/civicrm/civicrm-core/pull/11286))** - **Fix Recurring contribution sql so that it doesen't use group by as there doesn't appear to be a reason to do so given that we have a where id = x clause and we were grouping on the same field ([11231](https://github.com/civicrm/civicrm-core/pull/11231))** This resolves a test failure on retrieving the related contact for a recurring contribution. - **[CRM-21340](https://issues.civicrm.org/jira/browse/CRM-21340) make "view my invoices" permission cms agnostic ([11172](https://github.com/civicrm/civicrm-core/pull/11172))** This removes the use of a Drupal-specific global when checking permissions to download an invoice. - **[CRM-21305](https://issues.civicrm.org/jira/browse/CRM-21305) Sorting not working on Batch listing page ([11127](https://github.com/civicrm/civicrm-core/pull/11127))** - **[CRM-21281](https://issues.civicrm.org/jira/browse/CRM-21281) Post Hook for LineItem does not receive entity_id and entity_table ([11108](https://github.com/civicrm/civicrm-core/pull/11108) and [11097](https://github.com/civicrm/civicrm-core/pull/11097))** When editing a line item, `hook_civicrm_post` now specifies the ID and table of the line item that was modified. - **[CRM-20772](https://issues.civicrm.org/jira/browse/CRM-20772) Price set calculation precision when sales tax enabled ([11016](https://github.com/civicrm/civicrm-core/pull/11016))** - **[CRM-20572](https://issues.civicrm.org/jira/browse/CRM-20572) Remove jcalendar from Contrib Sybunt custom Search ([10355](https://github.com/civicrm/civicrm-core/pull/10355))** ### CiviEvent - **[CRM-21149](https://issues.civicrm.org/jira/browse/CRM-21149) On Event Registration Form, cannot target the text "(including yourself)" using word replacement because the parenthesis is outside the ts markers ([10942](https://github.com/civicrm/civicrm-core/pull/10942))** - **[CRM-21339](https://issues.civicrm.org/jira/browse/CRM-21339) Fix fatal js error on cart checkout when pay later not enabled ([11170](https://github.com/civicrm/civicrm-core/pull/11170))** - **[CRM-21009](https://issues.civicrm.org/jira/browse/CRM-21009) Removing event selection from participant does not free up capacity ([10805](https://github.com/civicrm/civicrm-core/pull/10805))** - **[CRM-21327](https://issues.civicrm.org/jira/browse/CRM-21327) Not able to change Payment Processor in event fees ([11153](https://github.com/civicrm/civicrm-core/pull/11153))** ### Drupal Integration Modules - **[CRM-21374](https://issues.civicrm.org/jira/browse/CRM-21374) D8 footer resources get added to the header ([11218](https://github.com/civicrm/civicrm-core/pull/11218))** Items added to the `page-footer` region would appear in the header in Drupal 8 sites. - **[CRM-21371](https://issues.civicrm.org/jira/browse/CRM-21371) An api error when calling drush cvapi should be treated as a drush error ([503](https://github.com/civicrm/civicrm-drupal/pull/503))** - **[CRM-21272](https://issues.civicrm.org/jira/browse/CRM-21272) CMSUser has Drupal 6/7 code that breaks when using with Drupal 8 ([11145](https://github.com/civicrm/civicrm-core/pull/11145), [11139](https://github.com/civicrm/civicrm-core/pull/11139), and [11079](https://github.com/civicrm/civicrm-core/pull/11079))** - **[CRM-19995](https://issues.civicrm.org/jira/browse/CRM-19995) Notice : Undefined offset: 5 dans _civicrm_member_roles_sync() ([500](https://github.com/civicrm/civicrm-drupal/pull/500))** ### CiviContribute, Internationalisation - **[CRM-21319](https://issues.civicrm.org/jira/browse/CRM-21319) Total Amount not translated on Contribution Page ([11147](https://github.com/civicrm/civicrm-core/pull/11147))** ### Import - **[CRM-19620](https://issues.civicrm.org/jira/browse/CRM-19620) importing record with external_identifier that matches with a deleted contact results in traceback ([11133](https://github.com/civicrm/civicrm-core/pull/11133))** ### CiviReport - **[CRM-20545](https://issues.civicrm.org/jira/browse/CRM-20545) contact report lists contacts that have been 'soft' deleted (placed in Trash) ([11136](https://github.com/civicrm/civicrm-core/pull/11136))** - **[CRM-19060](https://issues.civicrm.org/jira/browse/CRM-19060) Membership Detailed Report Payment Amount (most recent) not reporting correct contribution ([8837](https://github.com/civicrm/civicrm-core/pull/8837))** ### Dedupe - **[CRM-21303](https://issues.civicrm.org/jira/browse/CRM-21303) Dedupe datatable incorrectly calculates rows ([11121](https://github.com/civicrm/civicrm-core/pull/11121))** - **[CRM-21294](https://issues.civicrm.org/jira/browse/CRM-21294) js error when selecting & unselecting merge contacts ([11117](https://github.com/civicrm/civicrm-core/pull/11117))** ### Core CiviCRM, Internationalisation - **[CRM-21283](https://issues.civicrm.org/jira/browse/CRM-21283) Incorporate Barbados and Antigua and Barbuda Parishes into States list ([11100](https://github.com/civicrm/civicrm-core/pull/11100))** ### CiviMail, NYSS - **[CRM-20397](https://issues.civicrm.org/jira/browse/CRM-20397) CiviMail send immediately date/time check too sensitive ([11093](https://github.com/civicrm/civicrm-core/pull/11093) and [11092](https://github.com/civicrm/civicrm-core/pull/11092))** ### CiviCRM API - **[CRM-21246](https://issues.civicrm.org/jira/browse/CRM-21246) Problem 'double chaining', e.g. Contact.get - Relationship.get - Contact.get ([11056](https://github.com/civicrm/civicrm-core/pull/11056))** - **[CRM-21258](https://issues.civicrm.org/jira/browse/CRM-21258) Display name fatal error if names are too long ([11063](https://github.com/civicrm/civicrm-core/pull/11063))** ### Joomla Integration - **[CRM-21203](https://issues.civicrm.org/jira/browse/CRM-21203) cli.php PHP error prevents cron jobs from running ([11062](https://github.com/civicrm/civicrm-core/pull/11062))** Changes in Joomla 3.8--along with difficulties in detecting the Joomla version--prevented cron from executing on many Joomla sites. ## Miscellany - **[CRM-20710](https://issues.civicrm.org/jira/browse/CRM-20710) Add function to return all valid types ([10486](https://github.com/civicrm/civicrm-core/pull/10486))** - **[CRM-21291](https://issues.civicrm.org/jira/browse/CRM-21291) Confirm this code is not used & remove ([11116](https://github.com/civicrm/civicrm-core/pull/11116))** - **[CRM-21249](https://issues.civicrm.org/jira/browse/CRM-21249) Google Geocode limit breaks Jenkins test ([11058](https://github.com/civicrm/civicrm-core/pull/11058))** - **[CRM-12167](https://issues.civicrm.org/jira/browse/CRM-12167) Add support for admin-only fee / price field value options ([11073](https://github.com/civicrm/civicrm-core/pull/11073)) (related cleanup)** This change regenerates the DAO checksum. - **[nfc] Fix missing comma for phpcs ([11119](https://github.com/civicrm/civicrm-core/pull/11119))** - **(NFC) Add in test of current practice in updating multiselect custom data ([11081](https://github.com/civicrm/civicrm-core/pull/11081))** ## Credits This release was developed by the following code authors: AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel, Justin Freeman; Australian Greens - Seamus Lee; Christian Wach; Circle Interactive - Dave Jenkins; CiviCoop - Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Nicolas Ganivet, Yashodha Chaku; CiviFirst - John Kirk; Community IT Academy - William Mortada; CompuCorp - Michael Devery, Omar Abu Hussein; Coop SymbioTIC - Mathieu Lutfy; Daniël van Vuuren; Deepak Srivastava; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; JMA Consulting - Edsel Lopez, Monish Deb, Pradeep Nayak; John Kingsnorth; Joinery - Allen Shaw; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; mukeshcompucorp; olivierh65; Pawel Nowak; powdevel; Progressive Technology Project - Jamie McClelland; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton, Maggie Epps Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Adam Zilkie; AGH Strategies - Alice Frumin; Agileware - Agileware Team; Andrew Thompson; anna; Australian Greens - Seamus Lee; Blackfly Solutions - Alan Dixon; British Humanist Association - William Gordon; Christian Wach; Circle Interactive - Dave Jenkins; CiviCoop - Klaas Eikelboom; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Nicolas Ganivet, Sunil Pawar, Yashodha Chaku; CiviFirst - John Kirk; Community IT Academy - William Mortada; CompuCorp - Guanhuan Chen, Michael Devery, Mirela Stanila, Omar Abu Hussein; Coop SymbioTIC - Mathieu Lutfy; DanielvV; Dave Greenberg; DevMate - Adam Kwiatkowski; Effy Elden; Electronic Frontier Foundation - Mark Burdett; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; Ginkgo Street Labs - Frank Gómez; hollandopensource.nl; jcorlew; JMA Consulting - Edsel Lopez, Joe Murray, Monish Deb, Pradeep Nayak; Joanne Chester; Johan Vervloet; John Kingsnorth; Joinery - Allen Shaw; jorich-2000; klevie; Korlon - Stuart Gaston; Left Join Labs - Sean Madsen; Lemniscus - Noah Miller; Lighthouse Design and Consulting - Brian Shaughnessy; lorenzo.ardizzone@y-tech.it; MC3 - Graham Mitchell; Megaphone Technology Consulting - Jon Goldberg; mgribaudo; MJW Consulting - Matthew Wire; Mohamed Ziada; mukesh; mukeshcompucorp; myDropWizard - David Snopek; neilz; nicw; olivier; Pawel Nowak; Progressive Technology Project - Jamie McClelland; redgar; Responsive Development Technologies - Thomas Nilefalk; Semper IT - Karin Gerritsen; SEN Magazine - Jeremy Nicholls; Skvare - Mark Hanna; smallbiz; Spry Digital - Ellen Hendricks; Squiffle Consulting - Aidan Saunders; stevel; Systopia - Björn Endres; Tadpole Collective - Kevin Cristiano; Tech To The People - Xavier Dutoit; vingle; waddyvic; Web Access - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton ## Feedback These release notes are edited by Andrew Hunt. If you'd like to provide feedback on them, please login to https://chat.civicrm.org/civicrm and contact `@agh1`.