3 Released November 4, 2020
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
12 ## <a name="synopsis"></a>Synopsis
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | **Require attention to configuration options?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
24 ## <a name="features"></a>Features
28 - **Implement more nuanced "Administer CiviCRM" permisions
29 ([16482](https://github.com/civicrm/civicrm-core/pull/16482) and
30 [18671](https://github.com/civicrm/civicrm-core/pull/18671))**
32 Actions that required the "Administer CiviCRM" permission now require one of
33 two separate permissions: "administer CiviCRM system" and "administer CiviCRM
34 data". The "Administer CiviCRM" permission still exists, and users having it
35 are treated as implicitly having both of the new permissions.
37 However, it is now possible to grant permission to configure profiles,
38 scheduled reminders, and set admin-only price options independently of
39 granting permission to configure scheduled jobs, install extensions, and view
40 the system check. An organization might grant the former to senior staff and
41 the latter to technical staff.
43 - **Buttonrama ([18410](https://github.com/civicrm/civicrm-core/pull/18410),
44 [18820](https://github.com/civicrm/civicrm-core/pull/18820),
45 [18834](https://github.com/civicrm/civicrm-core/pull/18834),
46 [18799](https://github.com/civicrm/civicrm-core/pull/18799), and
47 [307](https://github.com/civicrm/civicrm-packages/pull/307))**
49 This ensures icons and text within buttons are aligned vertically, and it
50 makes form buttons appear consistent with links that are rendered to appear
53 Specifically, most buttons are now `<button>` elements rather than `<input
54 type="button">`, and button styling now applies to the button itself rather
55 than a wrapper. Extension and theme developers should confirm that CSS and
56 DOM selectors accurately identify the intended button elements.
58 - **Custom field form reform
59 ([18419](https://github.com/civicrm/civicrm-core/pull/18419))**
61 This improves the form for creating or updating custom fields by improving
62 validation, making defaults easier to select, and allowing more flexibility
63 around changing the widget type.
65 - **Add higher-level support for "bundles" and "collections" of resources
66 ([18247](https://github.com/civicrm/civicrm-core/pull/18247))**
68 "Resources" refers to CSS, Javascript, and DOM variables that developers can
69 add to certain pages. These can now be bundled together to reduce redundant
70 code and can be modified with the new `hook_civicrm_alterBundle()`.
72 The core styles and other resources are now included as bundles, allowing them
73 to be modified in a standard way.
75 In addition, page regions, bundles, and (to some extent) page resources are
76 now treated as "collections" which share a common interface for adding and
77 retrieving individual resources.
80 ([dev/user-interface#27](https://lab.civicrm.org/dev/user-interface/-/issues/27):
81 [18354](https://github.com/civicrm/civicrm-core/pull/18354),
82 [18465](https://github.com/civicrm/civicrm-core/pull/18465),
83 [18550](https://github.com/civicrm/civicrm-core/pull/18550),
84 [18583](https://github.com/civicrm/civicrm-core/pull/18583), and
85 [18579](https://github.com/civicrm/civicrm-core/pull/18579))**
87 CiviCRM introduced a theming system several years ago, but the existing look
88 and feel was left as a "default", with the *de facto* theming code spread
89 throughout the application. The new themes have generally used Bootstrap 3 as
90 a user interface framework.
92 A handful of new CiviCRM features have been developed that depend on Bootstrap
93 3 for core functionality or at least for basic look and feel. Sites lacking a
94 newer theme need a way to load at least a minimal set of Bootstrap 3 code for
95 these features to be functional and attractive.
97 This change introduces a new CiviCRM theme extension, named "Greenwich", that
98 is enabled and hidden by default for all sites. It provides Bootstrap 3 when
99 needed. In addition, it can serve as a vehicle for moving theming code out of
102 - **APIv4 Search: Improve GROUP_CONCAT with :label prefix
103 ([18572](https://github.com/civicrm/civicrm-core/pull/18572))**
105 This improves the Search UI by exposing the DISTINCT modifier and fixing
108 - **Search ext: rename to Search Kit, mark as beta
109 ([18672](https://github.com/civicrm/civicrm-core/pull/18672))**
111 An extension to replace the search user interface has been included, but
112 hidden, in CiviCRM for several months. Named Search Kit, it is now available
113 to be enabled for sites.
115 - **Search extension: edit smart groups
116 ([18431](https://github.com/civicrm/civicrm-core/pull/18431))**
118 Search Kit can now edit smart groups. When installed, the "edit smart group
119 criteria" link will open the classic search forms or Search Kit as
122 - **Search ext: support complex joins & HAVING clause in api4 smart groups
123 ([18644](https://github.com/civicrm/civicrm-core/pull/18644))**
125 Improves the new search extension and APIv4 smart groups in core to support
126 any entity that can join with Contact, including full support for calculated
127 fields and the HAVING clause.
129 - **Select field fixes for screen reader
130 ([17675](https://github.com/civicrm/civicrm-core/pull/17675),
131 [18873](https://github.com/civicrm/civicrm-core/pull/18873),
132 [18889](https://github.com/civicrm/civicrm-core/pull/18889))**
134 The placeholder text for select drop-down fields now reflects the field label.
135 The Select2 widget makes it difficult for screen readers to identify the
136 field's label, so this helps identify the field for users who rely on screen
139 - **Add modified_date to list of activity tokens
140 ([18611](https://github.com/civicrm/civicrm-core/pull/18611))**
142 Adds Modified date to the list of available activity tokens.
144 - **Add an 'Execute Now' button to the job log
145 ([18593](https://github.com/civicrm/civicrm-core/pull/18593))**
147 Adds an "Execute Now" button to the Job log to make it easier to rerun a
148 scheduled job if needed.
150 - **Send email to contacts when clicking on their email address on the contact's
151 card ([dev/core#1790](https://lab.civicrm.org/dev/core/-/issues/1790):
152 [18623](https://github.com/civicrm/civicrm-core/pull/18623))**
154 Improves the contact card by making the email a link which takes the user to a
155 form to send an email to that contact.
157 - **Ability to Search Smart or Normal Group using additional filter on Manage
158 Group page ([dev/report#45](https://lab.civicrm.org/dev/report/-/issues/45):
159 [18379](https://github.com/civicrm/civicrm-core/pull/18379) and
160 [18246](https://github.com/civicrm/civicrm-core/pull/18246))**
162 Adds a filter "Group Type" to the Manage Groups page which can be used
163 to filter by normal or smart groups.
165 - **Ability to Send Invoice with modified subject and CC it
166 ([dev/user-interface#30](https://lab.civicrm.org/dev/user-interface/-/issues/30):
167 [18286](https://github.com/civicrm/civicrm-core/pull/18286))**
169 Adds the ability to edit the subject and cc fields when emailing an invoice
172 - **Add ability to segment query logs
173 ([dev/core#2032](https://lab.civicrm.org/dev/core/-/issues/2032):
174 [18471](https://github.com/civicrm/civicrm-core/pull/18471) and
175 [309](https://github.com/civicrm/civicrm-packages/pull/309))**
177 SQL queries can be sent to a debugging log when the `CIVICRM_DEBUG_LOG_QUERY`
178 environment variable is set. Now, the value of that variable can specify a
179 file name for the log.
183 - **Move ACls on LineItem create to financialacls core extension
184 ([18339](https://github.com/civicrm/civicrm-core/pull/18339))**
186 Simplifies the code base by moving the financial ACL handling from the
187 LineItem BAO to the financialacls core extension.
189 - **Convert core processors to use Guzzle and bring them under CI (Work Towards
190 [dev/financial#143](https://lab.civicrm.org/dev/financial/-/issues/143):
191 [18350](https://github.com/civicrm/civicrm-core/pull/18350))**
193 The PayPal Pro payment processor integration now uses the Guzzle library for
194 HTTP requests. This improves consistency and allows for unit testing of the
197 - **Migrate Eway(Single Currency) Payment Processor Type out into its own
198 extension ([18349](https://github.com/civicrm/civicrm-core/pull/18349))**
200 The Eway payment processor is now a separate extension, albeit shipped with
203 - **Make 'Record Payment' & 'Record Refund' visible regardless of whether the
204 balance 'requires' one
205 ([dev/financial#86](https://lab.civicrm.org/dev/financial/-/issues/86):
206 [18417](https://github.com/civicrm/civicrm-core/pull/18417))**
208 Makes it so the "Record Payment" and "Record Refund" links on Contributions
211 - **Alter the default of send notification to contributor checkbox on cancel or
212 edit recurring to off
213 ([dev/core#1986](https://lab.civicrm.org/dev/core/-/issues/1986):
214 [18537](https://github.com/civicrm/civicrm-core/pull/18537))**
216 The "notify contributor" checkbox on the form to cancel or edit a recurring
217 donation is now unchecked by default.
219 - **PCP action links support for hook_civicrm_links
220 ([dev/core#2061](https://lab.civicrm.org/dev/core/-/issues/2061):
221 [18570](https://github.com/civicrm/civicrm-core/pull/18570))**
223 This allows `hook_civicrm_links` to be used by extension developers to modify the
224 list of actions offered to personal campaign page creators.
226 - **Add Line Item v4 API
227 ([dev/core#1980](https://lab.civicrm.org/dev/core/-/issues/1980):
228 [18388](https://github.com/civicrm/civicrm-core/pull/18388) and
229 [18352](https://github.com/civicrm/civicrm-core/pull/18352))**
231 Adds the "Line Item" entity to APIv4.
233 - **Improve metadata on LineItem DAO
234 ([18521](https://github.com/civicrm/civicrm-core/pull/18521))**
236 Adds labels to line item meta data.
240 - **Add options to Mail Account settings to improve inbound mail processing
241 ([18624](https://github.com/civicrm/civicrm-core/pull/18624))**
243 Two new options are added to the Mail Account settings form to improve inbound
246 1. 'Skip emails which do not have a Case ID or Case token'
247 2. 'Do not create new contacts when filing emails'
249 - **Change wording on the Opt Out and Unsubscribe pages
250 ([18338](https://github.com/civicrm/civicrm-core/pull/18338))**
252 Improves messaging to end user on Opt Out and Unsubscribe pages.
256 - **Add custom field groups to Membership Contribution Detail report
257 ([dev/report#49](https://lab.civicrm.org/dev/report/-/issues/49):
258 [18420](https://github.com/civicrm/civicrm-core/pull/18420))**
260 Contact custom fields are now available on the Membership Contribution Detail
263 ### Drupal Integration
265 - **Drupal 9 deprecations
266 ([dev/drupal#138](https://lab.civicrm.org/dev/drupal/-/issues/138):
267 [18461](https://github.com/civicrm/civicrm-core/pull/18461))**
269 Drupal now allows for smooth upgrades between major versions by gradually
270 introducing new API functions and deprecating others through the cycle of a
271 major version. A new major version starts by simply removing deprecated
272 function from the latest release of the prior major version.
274 This removes the use of a number of functions that have been deprecated since
275 Drupal 8.5 and are removed in Drupal 9. The result is that CiviCRM 5.31 is no
276 longer compatible with Drupal versions prior to 8.5 but is compatible with
279 - **Finish allowing use of SSL to connect to database
280 (Work Towards [dev/core#1926](https://lab.civicrm.org/dev/core/-/issues/1926):
281 [18264](https://github.com/civicrm/civicrm-core/pull/18264))**
283 The setup screen now attempts to identify if the Drupal database connection
284 uses SSL and fills the configuration options to match.
286 - **drush civicrm-ext-list add ext's status filter and show version number
287 ([597](https://github.com/civicrm/civicrm-drupal/pull/597))**
289 Extends the drush command `drush civicrm-ext-list` so that users can:
291 - Filter by the extension's status (installed, uninstalled, disabled)
292 - Show the extension version number in the result list
293 - Use the `--out` option to print results as json or as a pretty table
295 ## <a name="bugs"></a>Bugs resolved
299 - **"Network Error" when sorting contact search results by City, Postcode or
300 Country ([dev/core#2132](https://lab.civicrm.org/dev/core/-/issues/2132):
301 [18857](https://github.com/civicrm/civicrm-core/pull/18857))**
303 - **Public contribution form and Checksums: billing information not loaded if
304 using multiple processors
305 ([dev/core#334](https://lab.civicrm.org/dev/core/-/issues/334):
306 [18642](https://github.com/civicrm/civicrm-core/pull/18642))**
308 Custom data tables for contacts are now created with the charset and collation
309 to match the `civicrm_contact` table.
311 This resolves a bug when the billing information is not filled when visiting a
312 contribution page with multiple payment processors via a checksum link.
314 - **Deadlocks on acl_cache
315 (Work Towards [dev/core#1486](https://lab.civicrm.org/dev/core/-/issues/1486):
316 [18403](https://github.com/civicrm/civicrm-core/pull/18403))**
318 Removes foreign keys from the ACL cache tables as they are likely to
321 - **APIv4 - revisit required parameters on location entities
322 ([dev/core#2044](https://lab.civicrm.org/dev/core/-/issues/2044):
323 [18575](https://github.com/civicrm/civicrm-core/pull/18575))**
325 Makes it so that APIv4 can be used for creating event locations by making
326 contact_id optional for the Address, Phone and Email entities.
328 - **Eliminate "No extensions available for this version of CiviCRM"
329 ([dev/core#2063](https://lab.civicrm.org/dev/core/-/issues/2063):
330 [18596](https://github.com/civicrm/civicrm-core/pull/18596))**
332 Fixes warning thrown when no public extensions directory is found.
334 - **Group ids in profile fields are not correct
335 ([dev/core#2125](https://lab.civicrm.org/dev/core/-/issues/2125):
336 [18776](https://github.com/civicrm/civicrm-core/pull/18776))**
338 Fixes DB errors when using the groups field in a profile.
340 - **Drupal 7 + 9 Groups dont show in edit with version 5.30.1
341 ([dev/core#2136](https://lab.civicrm.org/dev/core/-/issues/2136):
342 [18831](https://github.com/civicrm/civicrm-core/pull/18831))**
344 - **Rebuild triggers after utf8mb4 conversion
345 ([18751](https://github.com/civicrm/civicrm-core/pull/18751))**
347 When the `System.utf8conversion` API call is run, this ensures that the
348 triggers for relationship_cache are updated to use the right encoding.
350 - **Remove explicit COLLATE utf8_bin from RelationshipCache trigger
351 ([18721](https://github.com/civicrm/civicrm-core/pull/18721))**
353 Ensure that relationship types can be edited after switching to utf8mb4.
355 - **Fix way of identifying custom serialized fields
356 ([18360](https://github.com/civicrm/civicrm-core/pull/18360))**
358 Removes references to field types that no longer exist, specifically the
359 'Multi-Select', 'Multi-Select State/Province', and 'Multi-Select Country',
360 custom field types, which were all removed in 5.27.
362 - **Exclude api4 from IDS check
363 ([18695](https://github.com/civicrm/civicrm-core/pull/18695))**
365 Fixes false-positive "suspicious activity" warnings in the IDS (Intrusion
366 Detection System) when using APIv4.
368 - **Fix complexity on cache key
369 ([18650](https://github.com/civicrm/civicrm-core/pull/18650))**
371 Ensures that the cacheKey does not cross-populate values from different users.
373 - **Use title instead name in status message
374 ([18406](https://github.com/civicrm/civicrm-core/pull/18406))**
376 Fixes help text when an option group is saved to show the title of the option
377 group instead of the name.
379 - **Export fix on long custom fields
380 ([18146](https://github.com/civicrm/civicrm-core/pull/18146))**
382 This resolves problems exporting custom fields that have long option values.
384 - **Contact form task delete php spelling fix
385 ([18399](https://github.com/civicrm/civicrm-core/pull/18399))**
387 - **Component Titles are not translated on the Configuration Checklist page
388 ([dev/translation#54](https://lab.civicrm.org/dev/translation/-/issues/54):
389 [18690](https://github.com/civicrm/civicrm-core/pull/18690))**
391 - **Error when viewing contact merged to permanently deleted contact
392 ([dev/core#1838](https://lab.civicrm.org/dev/core/-/issues/1838):
393 [18564](https://github.com/civicrm/civicrm-core/pull/18564))**
395 When one contact is merged to another contact, the first contact remains in
396 the trash and refers to the second. However, there was a bug preventing that
397 first contact from being viewed if the second contact was deleted permanently.
399 - **E_WARNING when editing custom field with trigger-based logging turned on
400 ([dev/core#1989](https://lab.civicrm.org/dev/core/-/issues/1989):
401 [18386](https://github.com/civicrm/civicrm-core/pull/18386))**
403 - **Northern Ireland / Wales counties are out of date
404 ([dev/core#2027](https://lab.civicrm.org/dev/core/-/issues/2027):
405 [18470](https://github.com/civicrm/civicrm-core/pull/18470))**
407 - **Multiple email activity cc recipients get scrunched together in recorded
408 activity details field
409 ([dev/core#2040](https://lab.civicrm.org/dev/core/-/issues/2040):
410 [18504](https://github.com/civicrm/civicrm-core/pull/18504))**
412 - **When exporting for composer-style deployment, exclude the `.gitignore` file
413 ([18673](https://github.com/civicrm/civicrm-core/pull/18673))**
415 - **Fix patently silly code
416 ([18652](https://github.com/civicrm/civicrm-core/pull/18652))**
419 ([18643](https://github.com/civicrm/civicrm-core/pull/18643))**
421 - **Fix bug in primary handling where TRUE rather than 1 used
422 ([18598](https://github.com/civicrm/civicrm-core/pull/18598))**
424 - **Greenwich - fix conflict btw bootstrap & jQuery UI button
425 ([18696](https://github.com/civicrm/civicrm-core/pull/18696))**
427 - **Remove double exception handling in repeattransaction
428 ([18594](https://github.com/civicrm/civicrm-core/pull/18594))**
430 - **Preferred Language in a profile doesn't show/behave as required when so
431 configured ([dev/core#1883](https://lab.civicrm.org/dev/core/-/issues/1883):
432 [18595](https://github.com/civicrm/civicrm-core/pull/18595))**
434 - **Fix deprecation notice
435 ([18541](https://github.com/civicrm/civicrm-core/pull/18541))**
437 - **Replace '&' to 'and' in button label
438 ([18405](https://github.com/civicrm/civicrm-core/pull/18405))**
440 - **Performance - meta issue for hunting down memory leaks
441 ([dev/core#2073](https://lab.civicrm.org/dev/core/-/issues/2073):
442 [18640](https://github.com/civicrm/civicrm-core/pull/18640),
443 [18701](https://github.com/civicrm/civicrm-core/pull/18701),
444 [18699](https://github.com/civicrm/civicrm-core/pull/18699),
445 [18702](https://github.com/civicrm/civicrm-core/pull/18702),
446 [18700](https://github.com/civicrm/civicrm-core/pull/18700),
447 [18692](https://github.com/civicrm/civicrm-core/pull/18692),
448 [18693](https://github.com/civicrm/civicrm-core/pull/18693),
449 [18633](https://github.com/civicrm/civicrm-core/pull/18633),
450 [18641](https://github.com/civicrm/civicrm-core/pull/18641) and
451 [18632](https://github.com/civicrm/civicrm-core/pull/18632))**
453 - **E_NOTICE viewing an activity that has no details contents
454 ([dev/core#2075](https://lab.civicrm.org/dev/core/-/issues/2075):
455 [18637](https://github.com/civicrm/civicrm-core/pull/18637))**
457 - **Undefined index on contact's activity tab when there's an activity that has
459 ([dev/core#2090](https://lab.civicrm.org/dev/core/-/issues/2090):
460 [18669](https://github.com/civicrm/civicrm-core/pull/18669))**
462 - **Undefined index 'class' on new individual form
463 ([dev/core#2093](https://lab.civicrm.org/dev/core/-/issues/2093):
464 [18678](https://github.com/civicrm/civicrm-core/pull/18678))**
466 - **Deprecation warnings when making thank-you letters
467 ([dev/core#2108](https://lab.civicrm.org/dev/core/-/issues/2108):
468 [18717](https://github.com/civicrm/civicrm-core/pull/18717) and
469 [18716](https://github.com/civicrm/civicrm-core/pull/18716))**
471 This affects all PDF letters.
473 - **Fix the output of the full text custom search form
474 ([18890](https://github.com/civicrm/civicrm-core/pull/18890))**
476 This resolves styling issues on the full text search form.
478 - **For countries without a province N/A is not accepted as a state in a profile
479 ([dev/core#2149](https://lab.civicrm.org/dev/core/-/issues/2149):
480 [18877](https://github.com/civicrm/civicrm-core/pull/18877))**
482 - **IN operator not working in Search
483 ([dev/core#2147](https://lab.civicrm.org/dev/core/-/issues/2147):
484 [18898](https://github.com/civicrm/civicrm-core/pull/18898))**
486 This changes the group search field in the basic "Find Contacts" search back
487 to a plain select drop-down rather than a Select2 widget.
491 - **Fix default report permissions when creating reports from CiviCampaign
492 ([18493](https://github.com/civicrm/civicrm-core/pull/18493))**
494 Ensures that CiviCampaign report titles are not accessible to users without
495 proper permissions to view the report.
499 - **Incorrect comparison of status_id when changing status of linked cases
500 ([dev/core#1979](https://lab.civicrm.org/dev/core/-/issues/1979):
501 [18309](https://github.com/civicrm/civicrm-core/pull/18309))**
505 - **View Payment owned by Different contact on Membership and Participant View.
506 ([dev/report#48](https://lab.civicrm.org/dev/report/-/issues/48):
507 [18281](https://github.com/civicrm/civicrm-core/pull/18281))**
509 This ensures that related payments are displayed when viewing a Membership or
510 Participant even if they come from a different contact.
512 - **Dropdown for country seems to have reverted to a regular select instead of
513 select2 ([dev/core#2030](https://lab.civicrm.org/dev/core/-/issues/2030):
514 [18533](https://github.com/civicrm/civicrm-core/pull/18533))**
516 This resolves a bug in the display of the Country field in the billing address
517 section of a contribution page.
519 - **Fix formatLocaleNumericRoundedByCurrency
520 ([18409](https://github.com/civicrm/civicrm-core/pull/18409))**
522 Ensures that currencies are rounded to the correct decimal point instead of
523 always 2 decimal points.
525 - **change civicrm_price_set.min_amount to float
526 ([18677](https://github.com/civicrm/civicrm-core/pull/18677))**
528 Updates the price set minimum amount field to be float (not int).
530 - **Incorrect rounding up with priceset fields
531 ([dev/core#2003](https://lab.civicrm.org/dev/core/-/issues/2003):
532 [18297](https://github.com/civicrm/civicrm-core/pull/18297) and
533 [18416](https://github.com/civicrm/civicrm-core/pull/18416))**
535 Ensures the amount is saved to the database correctly for price field values
536 when a value is entered longer than two decimals.
538 - **Display url_site and url_recur based on if the form elements exist
539 ([18324](https://github.com/civicrm/civicrm-core/pull/18324))**
541 Ensures developers can remove fields from the payment processor configuration
542 form using the build form hook.
544 - **LineItem pre Hook non-standard on edit
545 ([dev/core#1994](https://lab.civicrm.org/dev/core/-/issues/1994):
546 [18340](https://github.com/civicrm/civicrm-core/pull/18340))**
548 This resolves a bug in the entity ID sent to `hook_civicrm_pre` when editing
551 - **Performance - do not retrieve soft credits & pcps when not required
552 ([dev/core#2056](https://lab.civicrm.org/dev/core/-/issues/2056):
553 [18556](https://github.com/civicrm/civicrm-core/pull/18556))**
555 - **Remove ajax timeout from contribution page on behalf of
556 ([18140](https://github.com/civicrm/civicrm-core/pull/18140))**
558 - **property bag's setAmount should ensure dot decimal point
559 ([18429](https://github.com/civicrm/civicrm-core/pull/18429))**
563 - **Contact Dashboard does not show event registrations for non-admins
564 ([dev/event#43](https://lab.civicrm.org/dev/event/-/issues/43):
565 [18758](https://github.com/civicrm/civicrm-core/pull/18758))**
567 - **Set participant status notification to false by default
568 ([18544](https://github.com/civicrm/civicrm-core/pull/18544))**
570 The "Send Notification" checkbox is now always unchecked when editing a participant's status. Previously it would be checked by default when changing a status to "Cancelled" or from "Waitlist" or "Pending waitlist".
572 - **ParticipantListing Report: only display the View link for web, unhardcode
573 others ([18704](https://github.com/civicrm/civicrm-core/pull/18704))**
575 Ensures that when exporting the Participant Listing report the view links are
578 - **Scheduled reminder: "Additional recipients" receive reminders under
579 circumstances where they ought not to
580 ([dev/core#1590](https://lab.civicrm.org/dev/core/-/issues/1590):
581 [17641](https://github.com/civicrm/civicrm-core/pull/17641))**
583 Ensures that "Additional recipients" do not receive reminders for deleted
586 - **Email & Phone storage issues in event location
587 ([dev/core#1973](https://lab.civicrm.org/dev/core/-/issues/1973):
588 [18488](https://github.com/civicrm/civicrm-core/pull/18488))**
590 Ensures second email and phone values are saved for event locations.
592 - **Creating new event without email fails
593 ([dev/core#2096](https://lab.civicrm.org/dev/core/-/issues/2096):
594 [18710](https://github.com/civicrm/civicrm-core/pull/18710))**
596 - **Changing address on event hangs
597 ([dev/core#2102](https://lab.civicrm.org/dev/core/-/issues/2102):
598 [18713](https://github.com/civicrm/civicrm-core/pull/18713))**
602 - **Grant dashboard counts trashed contacts
603 ([dev/core#2009](https://lab.civicrm.org/dev/core/-/issues/2009):
604 [18428](https://github.com/civicrm/civicrm-core/pull/18428))**
608 - **Possible regression on deleted contacts
609 ([dev/core#2119](https://lab.civicrm.org/dev/core/-/issues/2119):
610 [18763](https://github.com/civicrm/civicrm-core/pull/18763))**
612 Ensures contacts deleted after a mailing is created do not get the mailing.
616 - **Membership Renewal form re 'fixMembershipBeforeRenew'
617 ([dev/membership#27](https://lab.civicrm.org/dev/membership/-/issues/27):
618 [18621](https://github.com/civicrm/civicrm-core/pull/18621))**
620 The status of an existing membership is now recalculated prior to loading the
621 renewal form. This allows an accurate status to be displayed and used for
622 calculating renewal dates.
624 - **Membership status does not get updated during membership import when status
626 ([dev/membership#30](https://lab.civicrm.org/dev/membership/-/issues/30):
627 [18821](https://github.com/civicrm/civicrm-core/pull/18821))**
629 - **Bug When Restoring Overridden Status on Related Memberships
630 ([dev/core#1854](https://lab.civicrm.org/dev/core/-/issues/1854):
631 [17742](https://github.com/civicrm/civicrm-core/pull/17742))**
633 Ensures related memberships do not get deleted when running the membership
634 status calculation scheduled job.
636 - **Fix for ongoing issues with static upsetting the apple cart
637 ([18245](https://github.com/civicrm/civicrm-core/pull/18245))**
639 Ensures that inherited relationships are created more reliably.
641 - **Multiple Memberships Status Not updated when payment status changed from
643 ([dev/core#1942](https://lab.civicrm.org/dev/core/-/issues/1942):
644 [18232](https://github.com/civicrm/civicrm-core/pull/18232))**
646 - **Make period_type mandatory for MembershipType
647 ([18395](https://github.com/civicrm/civicrm-core/pull/18395))**
649 ### Backdrop Integration
651 - **Check if BACKDROP_ROOT is defined already
652 ([18545](https://github.com/civicrm/civicrm-core/pull/18545))**
654 Fixes the "Constant BACKDROP_ROOT already defined..." notice.
656 ### Drupal Integration
658 - **Make symfony aliased services public
659 ([18443](https://github.com/civicrm/civicrm-core/pull/18443))**
661 Fixes a warning on the extensions form for Drupal 8 sites.
663 - **Tarball includes a symlink that goes nowhere, which causes alternate drupal
664 install method to fail
665 ([dev/core#1393](https://lab.civicrm.org/dev/core/-/issues/1393):
666 [18472](https://github.com/civicrm/civicrm-core/pull/18472),
667 [18605](https://github.com/civicrm/civicrm-core/pull/18605) and
668 [18659](https://github.com/civicrm/civicrm-core/pull/18659))**
670 - **Exception handling - 'Allowed memory size' exhasted issues
671 ([dev/drupal#119](https://lab.civicrm.org/dev/drupal/-/issues/119):
672 [18610](https://github.com/civicrm/civicrm-core/pull/18610))**
674 Avoid crashes from recursion on unhandled exceptions (most often an issue in
677 - **inheritLocale regression
678 ([dev/translation#51](https://lab.civicrm.org/dev/translation/-/issues/51):
679 [18447](https://github.com/civicrm/civicrm-core/pull/18447))**
681 Ensures that CiviCRM in multilingual mode respects the Drupal language.
683 - **Do not block user incase 'Require approval' is checked
684 ([18329](https://github.com/civicrm/civicrm-core/pull/18329))**
686 Ensures users created via a profile are set to active in Drupal8 to prevent
687 issues with the email verification step.
689 - **Fix customGroup getTableNameByEntityName to recognize all entities
690 ([18546](https://github.com/civicrm/civicrm-core/pull/18546))**
692 This ensures that all entities are recognized by Webform integration.
694 - **Custom field values not showing in Drupal 7 Views filter
695 ([dev/core#1929](https://lab.civicrm.org/dev/core/-/issues/1929):
696 [611](https://github.com/civicrm/civicrm-drupal/pull/611))**
698 - **Fix theme configuration section on Display preference and improve
699 `isFrontendPage` function for Drupal CMS
700 ([dev/core#1987](https://lab.civicrm.org/dev/core/-/issues/1987):
701 [18396](https://github.com/civicrm/civicrm-core/pull/18396) and
702 [18397](https://github.com/civicrm/civicrm-core/pull/18397))**
704 - **Drupal 7 - Groups children now get shown with SPAN CSS error
705 ([dev/core#2105](https://lab.civicrm.org/dev/core/-/issues/2105):
706 [18719](https://github.com/civicrm/civicrm-core/pull/18719))**
708 - **composer.json - Update compile-lib and compile-plugin
709 ([18670](https://github.com/civicrm/civicrm-core/pull/18670))**
711 ## <a name="misc"></a>Miscellany
713 - **Take the guesswork out of rendering clientside CRM variables
714 ([18262](https://github.com/civicrm/civicrm-core/pull/18262))**
716 - **Improve consistency of metadata type declarations
717 ([18147](https://github.com/civicrm/civicrm-core/pull/18147))**
719 - **Use eventID rather than the object in completeTransaction
720 ([18358](https://github.com/civicrm/civicrm-core/pull/18358))**
722 - **Load event title from participantID
723 ([18376](https://github.com/civicrm/civicrm-core/pull/18376))**
725 - **Fix Invoice class to not call validateData
726 ([18372](https://github.com/civicrm/civicrm-core/pull/18372))**
728 - **Finish deprecating BaseIPN->completeTransaction
729 ([18381](https://github.com/civicrm/civicrm-core/pull/18381))**
731 - **Add postAssert to check payments and contributions are valid on all tests.
732 ([18317](https://github.com/civicrm/civicrm-core/pull/18317))**
734 - **Switch frontend contribution form to cached/non-deprecated functions for
736 ([18404](https://github.com/civicrm/civicrm-core/pull/18404))**
738 - **Ensure DAO base class contains functions to be removed from generated files
739 ([18492](https://github.com/civicrm/civicrm-core/pull/18492))**
741 - **Switch backend membership form to use non-deprecated/cached functions to get
743 ([18427](https://github.com/civicrm/civicrm-core/pull/18427))**
745 - **Fix civi version for greenwich
746 ([18542](https://github.com/civicrm/civicrm-core/pull/18542))**
748 - **Switch to passing payment_processor_id as input param to completeOrder
749 ([18528](https://github.com/civicrm/civicrm-core/pull/18528))**
751 - **Switch membership BAO to use non-deprecated cached functions to get
752 membershipType details
753 ([18515](https://github.com/civicrm/civicrm-core/pull/18515))**
755 - **Separate export into separate classes to allow unravelling of component
757 ([18512](https://github.com/civicrm/civicrm-core/pull/18512))**
759 - **Simplify CRM_Core_BAO_Location::createLocBlock by moving eventLocation
760 specific handling back to the class
761 ([18578](https://github.com/civicrm/civicrm-core/pull/18578))**
763 - **Update the post-upgrade thank you message to include URLs to CiviCRM
764 contributors, CiviCRM members and minor rewrite
765 ([18559](https://github.com/civicrm/civicrm-core/pull/18559))**
767 - **Simplify call to loadRelatedObjects in repeat/completetransaction
768 ([18613](https://github.com/civicrm/civicrm-core/pull/18613))**
770 - **Move membership tab add/submit membership buttons to PHP layer
771 ([18143](https://github.com/civicrm/civicrm-core/pull/18143))**
773 - **Remove extraneous UF match queries
774 ([dev/core#2087](https://lab.civicrm.org/dev/core/-/issues/2087):
775 [18667](https://github.com/civicrm/civicrm-core/pull/18667) and
776 [18675](https://github.com/civicrm/civicrm-core/pull/18675))**
778 - **Can't send SMS to mailing group whose parent isn't a mailing group (Clean up
779 [dev/core#2053](https://lab.civicrm.org/dev/core/-/issues/2053):
780 [18698](https://github.com/civicrm/civicrm-core/pull/18698))**
782 - **Merge - ensure location entities remaining on deleted contacts have
784 (Clean up [dev/core#2047](https://lab.civicrm.org/dev/core/-/issues/2047):
785 [18499](https://github.com/civicrm/civicrm-core/pull/18499) and
786 [18500](https://github.com/civicrm/civicrm-core/pull/18500))**
788 - **[cq] Do not pass by reference where avoidable
789 (Work Towards [dev/core#2043](https://lab.civicrm.org/dev/core/-/issues/2043):
790 [18484](https://github.com/civicrm/civicrm-core/pull/18484) and
791 [18485](https://github.com/civicrm/civicrm-core/pull/18485))**
793 - **Fix the Test Result (1 failure / -190)
794 E2E.Core.PrevNextTest.testDeleteByCacheKey recurring test issue
795 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
796 [18587](https://github.com/civicrm/civicrm-core/pull/18587) and
797 [18565](https://github.com/civicrm/civicrm-core/pull/18565))**
799 - **SyntaxConformance::testSqlOperators cleanup fix - ensure entities are
800 deleted ([18569](https://github.com/civicrm/civicrm-core/pull/18569))**
802 - **Move afform to be a core extension
803 ([dev/core#2000](https://lab.civicrm.org/dev/core/-/issues/2000):
804 [18423](https://github.com/civicrm/civicrm-core/pull/18423))**
806 - **Upgrade Angular from 1.5 => 1.8
807 ([dev/core#1818](https://lab.civicrm.org/dev/core/-/issues/1818):
808 [18635](https://github.com/civicrm/civicrm-core/pull/18635))**
810 - **Extraneous queries - activities (Work Towards
811 [dev/core#2057](https://lab.civicrm.org/dev/core/-/issues/2057):
812 [18625](https://github.com/civicrm/civicrm-core/pull/18625),
813 [18566](https://github.com/civicrm/civicrm-core/pull/18566),
814 [18609](https://github.com/civicrm/civicrm-core/pull/18609),
815 [18636](https://github.com/civicrm/civicrm-core/pull/18636) and
816 [18567](https://github.com/civicrm/civicrm-core/pull/18567))**
818 - **Eliminate unused query on CRM_Core_BAO_CustomQuery::_construct
819 ([dev/core#2079](https://lab.civicrm.org/dev/core/-/issues/2079):
820 [18654](https://github.com/civicrm/civicrm-core/pull/18654),
821 [18653](https://github.com/civicrm/civicrm-core/pull/18653),
822 [18665](https://github.com/civicrm/civicrm-core/pull/18665),
823 [18664](https://github.com/civicrm/civicrm-core/pull/18664),
824 [18656](https://github.com/civicrm/civicrm-core/pull/18656),
825 [18657](https://github.com/civicrm/civicrm-core/pull/18657) and
826 [18655](https://github.com/civicrm/civicrm-core/pull/18655))**
828 - **Rationalise BAO create vs add functions (Work Towards
829 [dev/core#2046](https://lab.civicrm.org/dev/core/-/issues/2046):
830 [18682](https://github.com/civicrm/civicrm-core/pull/18682),
831 [18658](https://github.com/civicrm/civicrm-core/pull/18658),
832 [18495](https://github.com/civicrm/civicrm-core/pull/18495),
833 [18588](https://github.com/civicrm/civicrm-core/pull/18588),
834 [18661](https://github.com/civicrm/civicrm-core/pull/18661),
835 [18607](https://github.com/civicrm/civicrm-core/pull/18607) and
836 [18606](https://github.com/civicrm/civicrm-core/pull/18606))**
838 - **Address extraneous location queries
839 ([dev/core#2039](https://lab.civicrm.org/dev/core/-/issues/2039):
840 [18496](https://github.com/civicrm/civicrm-core/pull/18496),
841 [18498](https://github.com/civicrm/civicrm-core/pull/18498),
842 [18497](https://github.com/civicrm/civicrm-core/pull/18497),
843 [18494](https://github.com/civicrm/civicrm-core/pull/18494),
844 [18501](https://github.com/civicrm/civicrm-core/pull/18501),
845 [18480](https://github.com/civicrm/civicrm-core/pull/18480),
846 [18489](https://github.com/civicrm/civicrm-core/pull/18489),
847 [18684](https://github.com/civicrm/civicrm-core/pull/18684) and
848 [18663](https://github.com/civicrm/civicrm-core/pull/18663))**
850 - **Remove unused functions (Work Towards
851 [dev/core#2017](https://lab.civicrm.org/dev/core/-/issues/2017):
852 [18662](https://github.com/civicrm/civicrm-core/pull/18662),
853 [18430](https://github.com/civicrm/civicrm-core/pull/18430),
854 [18433](https://github.com/civicrm/civicrm-core/pull/18433),
855 [18463](https://github.com/civicrm/civicrm-core/pull/18463),
856 [18458](https://github.com/civicrm/civicrm-core/pull/18458))**
858 - **Remove unneccessary isoToDate function
859 ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921):
860 [18422](https://github.com/civicrm/civicrm-core/pull/18422),
861 [18576](https://github.com/civicrm/civicrm-core/pull/18576),
862 [18359](https://github.com/civicrm/civicrm-core/pull/18359),
863 [18469](https://github.com/civicrm/civicrm-core/pull/18469),
864 [18456](https://github.com/civicrm/civicrm-core/pull/18456),
865 [18457](https://github.com/civicrm/civicrm-core/pull/18457),
866 [18374](https://github.com/civicrm/civicrm-core/pull/18374),
867 [18383](https://github.com/civicrm/civicrm-core/pull/18383) and
868 [18468](https://github.com/civicrm/civicrm-core/pull/18468))**
870 - **Deprecate BaseIPN functions validateData & LoadObject (Work Towards
871 [dev/financial#148](https://lab.civicrm.org/dev/financial/-/issues/148):
872 [18479](https://github.com/civicrm/civicrm-core/pull/18479) and
873 [18571](https://github.com/civicrm/civicrm-core/pull/18571))**
875 - **Separate out Search participant register form from backoffice form
876 ([dev/event#42](https://lab.civicrm.org/dev/event/-/issues/42):
877 [18486](https://github.com/civicrm/civicrm-core/pull/18486))**
879 - **Add try catch to main loops on core ipn classes
880 ([18384](https://github.com/civicrm/civicrm-core/pull/18384))**
882 - **Rename variable $key to $participantID to make it clear what it is
883 ([18371](https://github.com/civicrm/civicrm-core/pull/18371))**
885 - **Stop passing / using object when all we need is the id
886 ([18331](https://github.com/civicrm/civicrm-core/pull/18331))**
888 - **Minor code cleanup - this is only ever called from one place so component is
889 always event ([18343](https://github.com/civicrm/civicrm-core/pull/18343))**
891 - **Membership form test cleanup, date cleanup on form
892 ([18413](https://github.com/civicrm/civicrm-core/pull/18413))**
894 - **Search ext: misc cleanup & fixes
895 ([18723](https://github.com/civicrm/civicrm-core/pull/18723))**
897 - **Switch to non-deprecated/cached functions for membership pricesets
898 ([18568](https://github.com/civicrm/civicrm-core/pull/18568))**
900 - **Fix parameters for MembershipTest
901 ([18467](https://github.com/civicrm/civicrm-core/pull/18467))**
903 - **Update code comments
904 ([18460](https://github.com/civicrm/civicrm-core/pull/18460))**
906 - **Pass in activity type rather than calculate it
907 ([18450](https://github.com/civicrm/civicrm-core/pull/18450))**
909 - **Move definition of userName to where it is used and remove an unused
910 parameter ([18452](https://github.com/civicrm/civicrm-core/pull/18452))**
912 - **Minor code simplification on date handling in getMembershipStatusByDate
913 ([18421](https://github.com/civicrm/civicrm-core/pull/18421))**
915 - **Offer singular entity titles
916 ([18434](https://github.com/civicrm/civicrm-core/pull/18434))**
918 - **(REF) GenerateData - Make it possible to call this via PHP
919 ([18491](https://github.com/civicrm/civicrm-core/pull/18491))**
921 - **[REF] Simplify array construction
922 ([18432](https://github.com/civicrm/civicrm-core/pull/18432))**
924 - **[REF] minor tidy up on membershipStatus::create & add
925 ([18435](https://github.com/civicrm/civicrm-core/pull/18435))**
927 - **[REF] Folllow up cleanup - remove now unused param
928 ([18438](https://github.com/civicrm/civicrm-core/pull/18438))**
930 - **[REF] Start the process of separating the search action from the participant
931 form ([18464](https://github.com/civicrm/civicrm-core/pull/18464))**
933 - **[Ref] Code simplification - remove conditional chunk
934 ([18445](https://github.com/civicrm/civicrm-core/pull/18445))**
936 - **[ref] Extract failContribution code
937 ([18418](https://github.com/civicrm/civicrm-core/pull/18418))**
939 - **[REF] Fix visibility of afform_scanner container service for Symfony …
940 ([18505](https://github.com/civicrm/civicrm-core/pull/18505))**
942 - **[REF] Refactor price field form to allow for unit testing of the form
943 ([18414](https://github.com/civicrm/civicrm-core/pull/18414))**
945 - **[REF] Minor readability fix
946 ([18415](https://github.com/civicrm/civicrm-core/pull/18415))**
948 - **[REF] change deprecated function to API4 call
949 ([18076](https://github.com/civicrm/civicrm-core/pull/18076))**
951 - **[NFC] Cleanup in test class
952 ([18539](https://github.com/civicrm/civicrm-core/pull/18539))**
954 - **[REF] Remove now used parameter & make function protected
955 ([18543](https://github.com/civicrm/civicrm-core/pull/18543))**
957 - **[REF] Consolidate input params that are primarily used for the membership
958 entity action to an array
959 ([18451](https://github.com/civicrm/civicrm-core/pull/18451))**
961 - **[REF] Extract the code to determine the DAO name into a functions
962 ([18513](https://github.com/civicrm/civicrm-core/pull/18513))**
964 - **[REF] Fix deprecated array and string offset access using curly brace…
965 ([18529](https://github.com/civicrm/civicrm-core/pull/18529))**
967 - **[REF] Code cleanup on membership renewal & test
968 ([18365](https://github.com/civicrm/civicrm-core/pull/18365))**
970 - **[REF] Improve the human readable name of the eway upgrade step to be …
971 ([18401](https://github.com/civicrm/civicrm-core/pull/18401))**
973 - **[REF] Simplify loading of related objects in transition components
974 ([18373](https://github.com/civicrm/civicrm-core/pull/18373))**
976 - **[REF] simplify interaction with objects in complete order
977 ([18385](https://github.com/civicrm/civicrm-core/pull/18385))**
979 - **[REF] Mark CRM_Contribute_BAO_Contribution_Utils::formatAmount deprec…
980 ([18387](https://github.com/civicrm/civicrm-core/pull/18387))**
982 - **[REF] Swap out CRM_Utils_Array::value() - partial pull out from PR 18207
983 ([18391](https://github.com/civicrm/civicrm-core/pull/18391))**
985 - **[REF] Remove unused lines from loadObjects
986 ([18389](https://github.com/civicrm/civicrm-core/pull/18389))**
988 - **[REF] Ensure that all bundle container services are public for Symfon…
989 ([18368](https://github.com/civicrm/civicrm-core/pull/18368))**
991 - **[REF] Parse ids before sending to single function (minor simplification)
992 ([18630](https://github.com/civicrm/civicrm-core/pull/18630))**
994 - **[REF] Hide eway extension in UI and only install it if the original e…
995 ([18377](https://github.com/civicrm/civicrm-core/pull/18377))**
997 - **[REF] Simplify logic on calling self::updateContributionStatus
998 ([18357](https://github.com/civicrm/civicrm-core/pull/18357))**
1000 - **[REF] Fix adding in the accessKey based on the button array
1001 ([18674](https://github.com/civicrm/civicrm-core/pull/18674))**
1003 - **[REF] Add in frontend fields for title and description of group Schem…
1004 ([18599](https://github.com/civicrm/civicrm-core/pull/18599))**
1006 - **[REF] Remove unused taskName variable
1007 ([18590](https://github.com/civicrm/civicrm-core/pull/18590))**
1009 - **[REF] IPN - move unshared chunk of code out of shared function
1010 ([18600](https://github.com/civicrm/civicrm-core/pull/18600))**
1012 - **[REF] Paypal std ipn Move not-actually shared-code out of shared code
1013 function ([18536](https://github.com/civicrm/civicrm-core/pull/18536))**
1015 - **[REF] Remove some unused params, move one to where it is used
1016 ([18614](https://github.com/civicrm/civicrm-core/pull/18614))**
1018 - **[Ref] Extract getOrderParams
1019 ([18617](https://github.com/civicrm/civicrm-core/pull/18617))**
1021 - **REF Filter params in completetransaction
1022 ([18321](https://github.com/civicrm/civicrm-core/pull/18321))**
1024 - **[REF] Fix compatability with Drupal 9 installing of var_dumper
1025 ([18679](https://github.com/civicrm/civicrm-core/pull/18679))**
1027 - **[REF] Add test for existing Participant batch update cancel and fix to not
1028 call BaseIPN->cancelled
1029 ([18318](https://github.com/civicrm/civicrm-core/pull/18318))**
1031 - **[REF] Use helper function to check if multiLingual
1032 ([604](https://github.com/civicrm/civicrm-drupal/pull/604))**
1034 - **[REF] Update Versions file and remove Net_URL class as doesn't appear…
1035 ([310](https://github.com/civicrm/civicrm-packages/pull/310))**
1037 - **[REF] Remove Eway Libraries and XML_Util as they are now shipped as p…
1038 ([306](https://github.com/civicrm/civicrm-packages/pull/306))**
1040 - **[REF] Add in css classes to make the save and preview button on the C…
1041 ([18647](https://github.com/civicrm/civicrm-core/pull/18647))**
1043 - **[REF] Move daoName generation so we don't need to pass the variable name
1044 ([18552](https://github.com/civicrm/civicrm-core/pull/18552))**
1046 - **[REF] Very minor cleanup
1047 ([18604](https://github.com/civicrm/civicrm-core/pull/18604))**
1049 - **[REF] Fix Event location to create it's locations directly rather than via
1050 shared methods ([18586](https://github.com/civicrm/civicrm-core/pull/18586))**
1052 - **[REF] Consolidate retrieval of searchFormValues
1053 ([18591](https://github.com/civicrm/civicrm-core/pull/18591))**
1055 - **[REF] Include recently added core extensions into distmaker
1056 ([18597](https://github.com/civicrm/civicrm-core/pull/18597))**
1058 - **[Ref] Extract getFormValues
1059 ([18510](https://github.com/civicrm/civicrm-core/pull/18510))**
1061 - **[REF] Remove checks as to whether entityShortName is in the component array
1062 ([18538](https://github.com/civicrm/civicrm-core/pull/18538))**
1064 - **[Ref] Merge code - Move determination about location type to the
1066 ([18562](https://github.com/civicrm/civicrm-core/pull/18562))**
1068 - **[REF] Remove unreachable lines
1069 ([18535](https://github.com/civicrm/civicrm-core/pull/18535))**
1071 - **[REF] Remove wrangling on activityType param
1072 ([18558](https://github.com/civicrm/civicrm-core/pull/18558))**
1074 - **[REF] Finally remove deprecated ids handling
1075 ([18557](https://github.com/civicrm/civicrm-core/pull/18557))**
1077 - **[REF] Update composer compile plugin to latest version
1078 ([18553](https://github.com/civicrm/civicrm-core/pull/18553))**
1080 - **(REF) Make it easier for extensions to define basic bundles
1081 ([18660](https://github.com/civicrm/civicrm-core/pull/18660))**
1083 - **[REF] Follow up cleanup from Event Location
1084 ([18608](https://github.com/civicrm/civicrm-core/pull/18608))**
1086 - **(REF) Switch to composer-compile-lib
1087 ([18646](https://github.com/civicrm/civicrm-core/pull/18646))**
1089 - **[REF] Remove XML_Util dependancy within ewaysingle extension
1090 ([18676](https://github.com/civicrm/civicrm-core/pull/18676))**
1092 - **Remove long-deprecated hook_civicrm_tabs
1093 ([18503](https://github.com/civicrm/civicrm-core/pull/18503))**
1095 - **Remove redundant custom field types
1096 ([18378](https://github.com/civicrm/civicrm-core/pull/18378) and
1097 ([622](https://github.com/civicrm/civicrm-drupal/pull/622))**
1099 - **Remove unnecessary call to 'validateData' from pdf generator
1100 ([18367](https://github.com/civicrm/civicrm-core/pull/18367))**
1102 - **Remove unnecessary debug from tests which messes up array output
1103 ([18446](https://github.com/civicrm/civicrm-core/pull/18446))**
1105 - **Remove error handling from loadObjects
1106 ([18393](https://github.com/civicrm/civicrm-core/pull/18393))**
1108 - **Remove deprecated code lines
1109 ([18490](https://github.com/civicrm/civicrm-core/pull/18490))**
1111 - **Remove CRM_Contact_BAO_Contact::getPrimaryOpenId
1112 ([18424](https://github.com/civicrm/civicrm-core/pull/18424))**
1114 - **Remove inaccessible call to baseIPN failed
1115 ([18369](https://github.com/civicrm/civicrm-core/pull/18369))**
1117 - **Remove pass-by-ref in PaypalProIPN::single
1118 ([18337](https://github.com/civicrm/civicrm-core/pull/18337))**
1120 - **Remove obsolete load-bootstrap.js
1121 ([18551](https://github.com/civicrm/civicrm-core/pull/18551))**
1123 - **Remove deprecated ids param
1124 ([18375](https://github.com/civicrm/civicrm-core/pull/18375))**
1126 - **Remove unused deprecated handling for partial_amount_to_pay
1127 ([18328](https://github.com/civicrm/civicrm-core/pull/18328))**
1129 - **Minor test data fix up - ensure domain contact's email is primary
1130 ([18561](https://github.com/civicrm/civicrm-core/pull/18561))**
1133 ([18560](https://github.com/civicrm/civicrm-core/pull/18560))**
1135 - **Preliminary cleanup on test
1136 ([18346](https://github.com/civicrm/civicrm-core/pull/18346))**
1138 - **Fix test to use validateAllContributions
1139 ([18348](https://github.com/civicrm/civicrm-core/pull/18348))**
1141 - **Afform Tests - Fix extension tests when run via `civi-test-run`
1142 ([18511](https://github.com/civicrm/civicrm-core/pull/18511))**
1144 - **Test fix - use valid membership type
1145 ([18507](https://github.com/civicrm/civicrm-core/pull/18507))**
1147 - **Test cleanup fix
1148 ([18601](https://github.com/civicrm/civicrm-core/pull/18601))**
1150 - **[Civi\Test] Fix test output noise
1151 ([18638](https://github.com/civicrm/civicrm-core/pull/18638))**
1153 - **[Test framework] Wrong group id in mailing test setup
1154 ([18626](https://github.com/civicrm/civicrm-core/pull/18626))**
1156 - **Add test to cover existing v3 api setting of tax_amount on line items
1157 ([18351](https://github.com/civicrm/civicrm-core/pull/18351))**
1159 - **Add unit test that ultimately failed to hit the desired code but does add
1160 cover ([18708](https://github.com/civicrm/civicrm-core/pull/18708))**
1162 - **[NFC/Test] Unit test activity-contact variations
1163 ([18619](https://github.com/civicrm/civicrm-core/pull/18619))**
1165 - **[NFC/Test] Unit test for target contacts on Bulk Email when mailing in
1166 batches ([18584](https://github.com/civicrm/civicrm-core/pull/18584))**
1168 - **[NFC] Remove trailing whitespace
1169 ([18476](https://github.com/civicrm/civicrm-core/pull/18476))**
1171 - **[NFC] Aim to reduce memory usage in create single value alter test by…
1172 ([18394](https://github.com/civicrm/civicrm-core/pull/18394))**
1174 - **[NFC/Test framework] Make class name match file name
1175 ([18392](https://github.com/civicrm/civicrm-core/pull/18392))**
1177 - **[NFC] Minor cleanup - use strict comparison where possible
1178 ([18573](https://github.com/civicrm/civicrm-core/pull/18573))**
1180 - **[NFC] Enable APIv4 Testing on the statusPrefence API Tests
1181 ([18366](https://github.com/civicrm/civicrm-core/pull/18366))**
1183 - **NFC Clarify what CRM_Price_BAO_Priceset::getMembershipCount does
1184 ([18426](https://github.com/civicrm/civicrm-core/pull/18426))**
1186 - **[NFC] Enable APIv4 testing on the Fin ACL Extension Line Item test
1187 ([18478](https://github.com/civicrm/civicrm-core/pull/18478))**
1189 - **Enotice fix ([18620](https://github.com/civicrm/civicrm-core/pull/18620))**
1191 - **Enotice fix ([18707](https://github.com/civicrm/civicrm-core/pull/18707))**
1193 - **Update civicrm_handler_field_contact_image.inc
1194 ([625](https://github.com/civicrm/civicrm-drupal/pull/625))**
1198 - **Update civicrm_handler_field_pseudo_constant.inc
1199 ([626](https://github.com/civicrm/civicrm-drupal/pull/626))**
1203 - **Update composer-download-plugin to v3.0.0 to support usage of composer 2.x
1204 ([18899](https://github.com/civicrm/civicrm-core/pull/18899))**
1206 ## <a name="credits"></a>Credits
1208 This release was developed by the following code authors:
1210 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; Bastien
1211 Ho; Blackfly Solutions - Alan Dixon; CEDC - Laryn Kragt Bakker; Christian Wach;
1212 Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten;
1213 CiviDesk - Sunil Pawar; CompuCorp - Camilo Rodriguez, Ivan; Coop SymbioTIC -
1214 Mathieu Lutfy; Dave D; iXiam - Luciano Spiegel; JMA Consulting - Monish Deb,
1215 Seamus Lee; John Kingsnorth; Lighthouse Consulting and Design - Brian
1216 Shaughnessy; Megaphone Technology Consulting - Dennis P. Osorio, Jon Goldberg;
1217 MJW Consulting - Matthew Wire; QED42 - Swastik Pareek; Richard van Oosterhout;
1218 Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole
1219 Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton
1221 Most authors also reviewed code for this release; in addition, the following
1222 reviewers contributed their comments:
1224 Abeilles en Vélo / Bees on a bike; Artful Robot - Rich Lott; Betty Dolfing;
1225 CiviCoop - Jaap Jansma; CiviCRM - Josh Gowans; CiviDesk - Nicolas Ganivet,
1226 Yashodha Chaku; CompuCorp - René Olivo; Freeform Solutions - Herb van den Dool;
1227 Fuzion - Jitendra Purohit, Luke Stewart; Irene Meisel; JMA Consulting - Joe
1228 Murray; Lemniscus - Noah Miller; MJCO - Mikey O'Toole; Tony Maynard-Smith;
1229 Wikimedia Foundation - Maggie Epps
1231 ## <a name="feedback"></a>Feedback
1233 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
1234 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1235 and contact `@agh1`.