3 Released September 2, 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 - **Contact export is very slow, creates huge temporary tables
29 ([dev/core#1725](https://lab.civicrm.org/dev/core/-/issues/1725):
30 [17458](https://github.com/civicrm/civicrm-core/pull/17458))**
32 Improves performance when exporting contacts by only exporting primary address
35 - **Allow different output formats for CiviReport results, like native excel
36 format, and untangle code
37 ([dev/core#1855](https://lab.civicrm.org/dev/core/-/issues/1855):
38 [17901](https://github.com/civicrm/civicrm-core/pull/17901))**
40 This makes it possible to extend CiviReport by reworking the PDF and CSV
41 generation code as new output handlers, and allowing for extension developers
44 - **Icon in status message after saving a civireport is misleading
45 ([dev/report#43](https://lab.civicrm.org/dev/report/-/issues/43):
46 [17863](https://github.com/civicrm/civicrm-core/pull/17863))**
48 Improves icons in Status Messages for reports.
50 - **Show cron warning on Scheduled Jobs admin page
51 ([18065](https://github.com/civicrm/civicrm-core/pull/18065))**
53 A pop-up message will appear on the Scheduled Jobs page if cron has not been
56 - **Add APIv4 and pseudoconstants for RelationshipCache
59 - **RelationshipCache - Add a high-level index to facilitate relationship
61 ([17781](https://github.com/civicrm/civicrm-core/pull/17781) and
62 [17879](https://github.com/civicrm/civicrm-core/pull/17879))**
64 A new table caches relationships to provide a single resource for tracking
65 relationships from a specified contact's perspective. The RelationshipCache
66 records the "near" and "far" contacts and relationship names along with the
67 orientation and relationship type. Each record from `civicrm_relationship`
68 will have two records in `civicrm_relationship_cache`, one for each
71 - **Remove ORDER BY and GROUP BY from alphabetQuery to improve performance
72 ([16877](https://github.com/civicrm/civicrm-core/pull/16877))**
74 - **Differentiate smart group from regular group using icon in select2 field
75 ([dev/core#785](https://lab.civicrm.org/dev/core/-/issues/785):
76 [17927](https://github.com/civicrm/civicrm-core/pull/17927))**
78 Improves Group's select2 by adding icon next to smart groups.
80 - **Feature: Ability to enable SSL for database connection.
81 ([dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
82 [17706](https://github.com/civicrm/civicrm-core/pull/17706))**
84 Makes it so sites can use ssl to connect to mysql.
86 - **Add in hook to allow for altering of Profile Schemas
87 ([dev/core#1913](https://lab.civicrm.org/dev/core/-/issues/1913):
88 [17986](https://github.com/civicrm/civicrm-core/pull/17986))**
90 Extensions that allow additional fields to be added to profiles can now add
91 schemas so that fields can be added from new entities.
93 - **Why not make the buttons flat?
94 ([18054](https://github.com/civicrm/civicrm-core/pull/18054))**
96 Buttons no longer have a gradient background.
98 - **SystemCheck: add ability to efficiently run only specified checks
99 ([17824](https://github.com/civicrm/civicrm-core/pull/17824))**
101 The APIv4 system check action can now filter on name, running just the
104 - **Change inform-icon to fa-info-circle
105 ([18001](https://github.com/civicrm/civicrm-core/pull/18001))**
107 The information icon is now produced with Font Awesome rather than a sprite.
109 - **APIv4 - Add keyword to select all custom fields
110 ([17955](https://github.com/civicrm/civicrm-core/pull/17955))**
112 You can now use a wildcard to select all custom fields on an entity without
113 specifying each individually.
115 - **Improve caching of current domain
116 ([17916](https://github.com/civicrm/civicrm-core/pull/17916))**
118 Domain information is now cached in one central place, making it more
119 straightforward to use and flush.
121 - **APIv4 - Specify BridgeEntities to assist with joins
122 ([17808](https://github.com/civicrm/civicrm-core/pull/17808))**
124 Minor entities that intermediate many-to-many relationships are now specified
125 as bridge entities and extend from a new base class. This will allow them to
126 be distinguished better in the future.
128 - **APIv4 - Add shorthand for setCheckPermissions()
129 ([17834](https://github.com/civicrm/civicrm-core/pull/17834) and
130 [17874](https://github.com/civicrm/civicrm-core/pull/17874))**
132 The CRUD functions of APIv4 now accept a boolean argument that corresponds to
133 the value sent to `setCheckPermissions()`. This provides a shorthand for a
134 very common use case.
136 - **Add search extension
137 ([17775](https://github.com/civicrm/civicrm-core/pull/17775),
138 [17789](https://github.com/civicrm/civicrm-core/pull/17789), and
139 [17864](https://github.com/civicrm/civicrm-core/pull/17864))**
141 An extension that replaces Search Builder is now shipped with core, though it
142 is hidden from the extensions user interface because it is currently
143 incompatible with the default theming framework.
147 - **Add configure and priceset url icons on public contribution & event pages
148 ([dev/core#1905](https://lab.civicrm.org/dev/core/-/issues/1905):
149 [17942](https://github.com/civicrm/civicrm-core/pull/17942),
150 [18088](https://github.com/civicrm/civicrm-core/pull/18088) and
151 [18064](https://github.com/civicrm/civicrm-core/pull/18064))**
153 A "Configure" button now appears to administrators when viewing a contribution
154 page or event, or a priceset within either, from the frontend. This links to
155 the corresponding form to administer the contribution page, event, or
160 - **Move Event Cart to extension
161 ([17741](https://github.com/civicrm/civicrm-core/pull/17741),
162 [17743](https://github.com/civicrm/civicrm-core/pull/17743),
163 [17861](https://github.com/civicrm/civicrm-core/pull/17861),
164 [17884](https://github.com/civicrm/civicrm-core/pull/17884),
165 [17885](https://github.com/civicrm/civicrm-core/pull/17885), and
166 [17891](https://github.com/civicrm/civicrm-core/pull/17891))**
168 The event cart features have been moved to a separate extension that is
173 - **Option to update expired memberships as part of the job.process_membership
174 ([dev/membership#18](https://lab.civicrm.org/dev/membership/-/issues/18):
175 [16298](https://github.com/civicrm/civicrm-core/pull/16298))**
177 Improves the Job.process_membership API/Scheduled job by adding some new
178 parameters, specifically:
180 - exclude_test_memberships: Exclude test memberships from calculations
182 - only_active_membership_types: Exclude disabled membership types from
183 calculations (default = TRUE)
184 - exclude_membership_status_ids: Default: Exclude Pending, Cancelled,
187 Deceased will always be excluded
189 - **Add auto-renew status to membership detail report
190 ([17683](https://github.com/civicrm/civicrm-core/pull/17683) and
191 [17911](https://github.com/civicrm/civicrm-core/pull/17911))**
193 The membership detail report can now display and filter on the auto-renew
194 status of each membership.
196 ### Backdrop Integration
198 - **Support for installing CiviCRM-Backdrop via "setup" UI
199 ([17749](https://github.com/civicrm/civicrm-core/pull/17749) and
200 [121](https://github.com/civicrm/civicrm-backdrop/pull/121))**
202 Improves the installation and Setup process for Backdrop integration's so that
203 one enables the CiviCRM module like any other module and then is directed to
204 the setup screen to complete installation as opposed to having to navigate to
207 ### Drupal Integration
209 - **Upgrading a site that still has "mysql" in the dsn string breaks in latest
210 master ([dev/core#1937](https://lab.civicrm.org/dev/core/-/issues/1937):
211 [18174](https://github.com/civicrm/civicrm-core/pull/18174))**
213 This adds an upgrade message for 5.29.0 warning that Composer patching will
214 need to be enabled before upgrading to 5.30.0 or higher.
216 The "mysql" in the DSN (as opposed to "mysqli") will not be a problem, but the
217 solution for this is in a package patch that appears in 5.30.
219 - **Installation - Support "activate first" w/setup UI
220 ([606](https://github.com/civicrm/civicrm-drupal/pull/606))**
222 The new setup user interface for Backdrop and WordPress installations is now
223 available for Drupal 7.
225 ### WordPress Integration
227 - **Add system check to ensure WP base page exists
228 ([17698](https://github.com/civicrm/civicrm-core/pull/17698))**
230 A new system check will display a message if the base page, as set in CiviCRM,
231 doesn't match an existing page in WordPress. No message will display if
232 WordPress multisite is enabled.
234 ## <a name="bugs"></a>Bugs resolved
238 - **CRM_Dedupe_Finder parses phone key incorrectly
239 ([dev/core#1767](https://lab.civicrm.org/dev/core/-/issues/1767):
240 [17361](https://github.com/civicrm/civicrm-core/pull/17361) and
241 [17882](https://github.com/civicrm/civicrm-core/pull/17882))**
243 The process to match duplicate contacts was not accurately identifying phone
244 fields, causing contacts with matching phone numbers to be treated as if they
247 - **Dedupe: Location type is treated inconsistently
248 ([dev/core#1826](https://lab.civicrm.org/dev/core/-/issues/1826):
249 [17645](https://github.com/civicrm/civicrm-core/pull/17645))**
251 Duplicate matching now ignores location type for postal address fields, now
252 consistent with how it has ignored phone and email location types.
254 - **Installing Drupal 8 using civicrm-setup leads to "incorrect resource url"
255 system status check errors
256 ([dev/drupal#114](https://lab.civicrm.org/dev/drupal/-/issues/114) and
257 [dev/core#1647](https://lab.civicrm.org/dev/core/-/issues/1647):
258 [17754](https://github.com/civicrm/civicrm-core/pull/17754))**
260 Removes the resource URL status check.
262 - **API4: 500 error on chain with custom field
263 ([dev/core#1578](https://lab.civicrm.org/dev/core/-/issues/1578):
264 [17866](https://github.com/civicrm/civicrm-core/pull/17866))**
266 - **MySQL uses filesort index when building the query which can cause
268 ([dev/core#1665](https://lab.civicrm.org/dev/core/-/issues/1665):
269 [18052](https://github.com/civicrm/civicrm-core/pull/18052))**
271 - **Custom fields not copied on shared address
272 ([dev/core#1670](https://lab.civicrm.org/dev/core/-/issues/1670):
273 [17580](https://github.com/civicrm/civicrm-core/pull/17580))**
275 - **Email template permissions
276 ([dev/core#1751](https://lab.civicrm.org/dev/core/-/issues/1751):
277 [17480](https://github.com/civicrm/civicrm-core/pull/17480))**
279 Users sending an email are no longer able to save or modify a template if they
280 lack the "edit message templates" permission.
282 - **Using Parent tag in search form doesn't pull contacts marked with child tag
283 in search form result
284 ([dev/core#1795](https://lab.civicrm.org/dev/core/-/issues/1795):
285 [17513](https://github.com/civicrm/civicrm-core/pull/17513))**
287 - **Activity Search : Tags are not working
288 ([dev/core#1827](https://lab.civicrm.org/dev/core/-/issues/1827):
289 [17655](https://github.com/civicrm/civicrm-core/pull/17655) and
290 [17755](https://github.com/civicrm/civicrm-core/pull/17755))**
292 - **Autocomplete-select custom field is not searchable
293 ([dev/core#1805](https://lab.civicrm.org/dev/core/-/issues/1805):
294 [17569](https://github.com/civicrm/civicrm-core/pull/17569))**
296 - **Do not allow enabling database logging when using multilingual
297 ([dev/core#1812](https://lab.civicrm.org/dev/core/-/issues/1812):
298 [17815](https://github.com/civicrm/civicrm-core/pull/17815))**
300 This has never worked, with network errors as the result. This prevents it
303 - **Can't remove subtype if any required custom field is based on it
304 ([dev/core#1853](https://lab.civicrm.org/dev/core/-/issues/1853):
305 [17765](https://github.com/civicrm/civicrm-core/pull/17765))**
307 - **User account form action not passing along contact id correctly possibly
308 leading to duplicate contacts
309 ([dev/core#1858](https://lab.civicrm.org/dev/core/-/issues/1858):
310 [17769](https://github.com/civicrm/civicrm-core/pull/17769))**
312 When creating a user account from a contact record, the contact ID was not
313 properly passed along. Depending upon your unsupervised duplicate matching
314 rule, it would potentially create a duplicate contact record.
316 - **Cannot edit a profile field of "Email" to use the Location Type "Primary"
317 ([dev/core#1861](https://lab.civicrm.org/dev/core/-/issues/1861):
318 [17812](https://github.com/civicrm/civicrm-core/pull/17812))**
320 The location type would get reset to your default location type rather than
321 staying as "primary".
323 - **Downgrade checkEnvironment level and skip non-prod checks (part of
324 [dev/core#1863](https://lab.civicrm.org/dev/core/-/issues/1863):
325 [17807](https://github.com/civicrm/civicrm-core/pull/17807))**
327 In non-production environments, a system check produces a message saying so.
328 This downgrades it from an "Alert" to a more appropriate level of "Notice",
329 and it also suppresses cron and CiviMail system checks in this situation.
331 - **Slew of E_NOTICES on Profiles admin page and description field is always
332 blank ([dev/core#1868](https://lab.civicrm.org/dev/core/-/issues/1868):
333 [17786](https://github.com/civicrm/civicrm-core/pull/17786))**
335 - **CiviReport sent as email via mail_report job with a CSV attachment doesn't
336 show UTF8 characters properly in Excel
337 ([dev/core#1869](https://lab.civicrm.org/dev/core/-/issues/1869):
338 [17806](https://github.com/civicrm/civicrm-core/pull/17806))**
340 - **References to packages path in security status checks are assumed to be
342 ([dev/core#1872](https://lab.civicrm.org/dev/core/-/issues/1872):
343 [17844](https://github.com/civicrm/civicrm-core/pull/17844))**
345 This changes how package and vendor paths are calculated in system checks
346 since (in Drupal 8 and potentially elsewhere) they may not be within the
349 - **Custom data insert/update error if using reserved words
350 ([dev/core#1880](https://lab.civicrm.org/dev/core/-/issues/1880):
351 [17848](https://github.com/civicrm/civicrm-core/pull/17848))**
353 - **Advanced Search (search by complete or partial name) returns all contacts
354 ([dev/core#1895](https://lab.civicrm.org/dev/core/-/issues/1895):
355 [17950](https://github.com/civicrm/civicrm-core/pull/17950))**
357 The ability to search first/last name was recently added to core. The primary
358 intent was to properly handle advanced searches that originate from
359 quicksearch first/last name filters. While that was working, a first/last name
360 search that originated directly from an advanced search was not working. This
363 - **Miscellaneous E_NOTICES
364 ([dev/core#1909](https://lab.civicrm.org/dev/core/-/issues/1909):
365 [18006](https://github.com/civicrm/civicrm-core/pull/18006),
366 [17962](https://github.com/civicrm/civicrm-core/pull/17962),
367 [17964](https://github.com/civicrm/civicrm-core/pull/17964),
368 [17959](https://github.com/civicrm/civicrm-core/pull/17959), and
369 [17985](https://github.com/civicrm/civicrm-core/pull/17985))**
371 - **CRM_Core_Key::valid() does backwards comparison
372 ([dev/core#1918](https://lab.civicrm.org/dev/core/-/issues/1918):
373 [18007](https://github.com/civicrm/civicrm-core/pull/18007))**
375 This removes legacy code that appeared to attempt to check for a valid
376 quickForm key but wasn't effectively doing so.
378 - **Upgrade fails for 4.6 => 5.29 during status-check
379 ([dev/core#1932](https://lab.civicrm.org/dev/core/-/issues/1932):
380 [18085](https://github.com/civicrm/civicrm-core/pull/18085))**
382 - **Installation doclinks not getting url-rewritten
383 ([18175](https://github.com/civicrm/civicrm-core/pull/18175))**
385 Links to the new installation documentation are now handled in the same way as
386 other documentation sites.
388 - **Wrap multi record custom field inside a div
389 ([17966](https://github.com/civicrm/civicrm-core/pull/17966))**
391 - **Fixed filling default values for tagssets in the advanced search form
392 ([17978](https://github.com/civicrm/civicrm-core/pull/17978))**
394 - **Simplify caching of status checks
395 ([17817](https://github.com/civicrm/civicrm-core/pull/17817))**
397 - **Ensure custom field checkboxes are populated in profiles
398 ([17977](https://github.com/civicrm/civicrm-core/pull/17977))**
400 - **Upgrade PEAR/mail_mime package to be compliant with PHP7.4 and deploy it
401 using composer ([17948](https://github.com/civicrm/civicrm-core/pull/17948))**
403 - **Setup UI - Validate that at least one "Component" is enabled
404 ([17778](https://github.com/civicrm/civicrm-core/pull/17778))**
406 This prevents you from proceeding with installation without enabling at least
407 one component. Not enabling any components causes a messy failed
410 - **Call apiv4 from Contribution create rather than fugly addActivity function
411 ([17881](https://github.com/civicrm/civicrm-core/pull/17881))**
413 - **Search debug ([17887](https://github.com/civicrm/civicrm-core/pull/17887))**
415 - **Simplify flushing group contact cache query to reduce table locking and
417 ([17846](https://github.com/civicrm/civicrm-core/pull/17846))**
419 - **Make api get upgrade-safe
420 ([17729](https://github.com/civicrm/civicrm-core/pull/17729))**
422 This avoids database errors when the code and database versions don't match by
423 preventing the API from accessing fields that are unsupported in the database.
425 - **CheckEnv - Give new installs a grace period before 'Cron Not Running' msg
426 ([17800](https://github.com/civicrm/civicrm-core/pull/17800))**
428 The system check will lower the severity of the "cron not running" check for
429 the first 24 hours after a site has been installed.
431 - **Sort permittedActivityTypes
432 ([17794](https://github.com/civicrm/civicrm-core/pull/17794))**
434 This improves performance on filtering activity types by making it possible to
435 compare a list of permitted types with the overall list of activity type IDs.
437 - **APIv4 - Fix saving custom fields with same name
438 ([17791](https://github.com/civicrm/civicrm-core/pull/17791))**
440 - **Status Checks - Use more specific label regarding "Domain"/"Organization"
441 check ([17776](https://github.com/civicrm/civicrm-core/pull/17776))**
443 - **SQL temp table not using utf8mb4 if server default already set to utf8mb4
444 ([18012](https://github.com/civicrm/civicrm-core/pull/18012))**
446 - **Wrong link to admin page in error message about FROM address on PCP page
447 ([17996](https://github.com/civicrm/civicrm-core/pull/17996))**
449 - **Fix sticky table header on "Find Activities" page
450 ([17917](https://github.com/civicrm/civicrm-core/pull/17917))**
452 - **Fixed DB Error: syntax error if line item refers to civicrm_case
453 ([16626](https://github.com/civicrm/civicrm-core/pull/16626))**
455 - **Fix potential js error on summary screen when reloading blocks
456 ([17865](https://github.com/civicrm/civicrm-core/pull/17865))**
458 - **Fix 'Undefined variable: jsSet in CRM_Core_BAO_Mapping::loadSavedMapping()'
459 ([17816](https://github.com/civicrm/civicrm-core/pull/17816))**
461 - **Fixed notice error on Relationships report
462 ([17787](https://github.com/civicrm/civicrm-core/pull/17787))**
464 - **Fix obscure dedupe scenario where 'bad' location data can overwrite good
465 data ([17993](https://github.com/civicrm/civicrm-core/pull/17993))**
467 - **Fix JQuery Validation for radios
468 ([17937](https://github.com/civicrm/civicrm-core/pull/17937))**
472 - **Fix case activity field set to allow long details to be exported
473 ([17970](https://github.com/civicrm/civicrm-core/pull/17970))**
475 - **Case export has two fields that are not what they say they are
476 ([dev/core#1916](https://lab.civicrm.org/dev/core/-/issues/1916):
477 [18043](https://github.com/civicrm/civicrm-core/pull/18043))**
479 - **Collapsed custom field set for activities with a required radio makes case
480 activity buttons seem disabled
481 ([dev/core#1928](https://lab.civicrm.org/dev/core/-/issues/1928):
482 [18080](https://github.com/civicrm/civicrm-core/pull/18080))**
484 - **CRM_Utils_Check_Component_Case - Guard against post-upgrade crash
485 ([17944](https://github.com/civicrm/civicrm-core/pull/17944))**
489 - **Define the logic that sets (or not) contribution receive_date in relation to
491 ([dev/financial#139](https://lab.civicrm.org/dev/financial/-/issues/139):
492 [17777](https://github.com/civicrm/civicrm-core/pull/17777) and
493 [18000](https://github.com/civicrm/civicrm-core/pull/18000))**
495 This undoes a regression where the contribution date of a pay-later
496 contribution would change when a payment completes the contribution. The
497 contribution date is the accrual date and is distinct from the date the
498 contribution is entered and the date when all payments have been received.
500 In the process, this changes the "Update pending contribution status" search
501 action to be "Record payments for contributions". The result is generally the
502 same, but the status change comes about because the payments complete the
503 contributions. You can modify contribution statuses in bulk with a profile by
504 using the "Update multiple contributions" action.
506 - **Disable frequency/interval fields if not required. Mark required if they are
507 so they are validated before submit
508 ([17526](https://github.com/civicrm/civicrm-core/pull/17526))**
510 The frequency and interval fields for recurring contributions now use jQuery
511 validation to disable or require them as appropriate.
513 - **Paypal IPN sometimes fails to update the next scheduled payment date when
514 recording the latest recurring payment
515 ([dev/core#1679](https://lab.civicrm.org/dev/core/-/issues/1679):
516 [17744](https://github.com/civicrm/civicrm-core/pull/17744))**
518 - **Contribution Details Statistics are multiplied under many circumstances
519 ([dev/report#21](https://lab.civicrm.org/dev/report/-/issues/21):
520 [15435](https://github.com/civicrm/civicrm-core/pull/15435) and
521 [17809](https://github.com/civicrm/civicrm-core/pull/17809))**
523 - **Contribution Summary Report: The "general total" row does not take the
525 ([dev/report#27](https://lab.civicrm.org/dev/report/-/issues/27):
526 [16736](https://github.com/civicrm/civicrm-core/pull/16736))**
528 When the contribution summary report is used by filtering for a currency other
529 than the site's default currency, the "grand total" row shows the sign of the
530 default currency instead of the filtered currency.
532 - **Fix PaypalIPN single function to not receive-by-reference
533 ([18044](https://github.com/civicrm/civicrm-core/pull/18044))**
535 - **Allow Failed -> Completed status for contributions
536 ([dev/core#1906](https://lab.civicrm.org/dev/core/-/issues/1906):
537 [17943](https://github.com/civicrm/civicrm-core/pull/17943))**
539 - **Fix currency symbol for Total Amount on contribution page
540 ([17703](https://github.com/civicrm/civicrm-core/pull/17703))**
542 This resolves a but where the total amount would show the default system
543 currency symbol regardless of the currency configured on the contribution
546 - **On behalf label / Honoree Title / Honoree Description not translatable on
548 ([dev/core#1280](https://lab.civicrm.org/dev/core/-/issues/1280):
549 [16838](https://github.com/civicrm/civicrm-core/pull/16838))**
551 - **Load contribution page if live payment processor is disabled but test is
552 available ([17828](https://github.com/civicrm/civicrm-core/pull/17828))**
554 - **Remove requirement to pass 'contribution_status_id' => Pending from
555 order.create ([18018](https://github.com/civicrm/civicrm-core/pull/18018))**
557 - **Use saved contribution's line items rather than the primaryContributionID
558 ([18033](https://github.com/civicrm/civicrm-core/pull/18033))**
560 - **Do not overwrite values saved from the repeatContribution routine
561 ([17972](https://github.com/civicrm/civicrm-core/pull/17972))**
563 - **"Contribution Source" profile field has no effect on new contribution
564 ([dev/core#1902](https://lab.civicrm.org/dev/core/-/issues/1902):
565 [17930](https://github.com/civicrm/civicrm-core/pull/17930))**
567 - **Incorrect check for "soft_credit" after making pcp donation
568 ([dev/core#1915](https://lab.civicrm.org/dev/core/-/issues/1915):
569 [18002](https://github.com/civicrm/civicrm-core/pull/18002))**
571 - **Total Tax Amount on the Contribution (generated in backoffice/offline) no
572 longer adds up to sum of the Tax Amount for the individual line items
573 ([dev/core#1983](https://lab.civicrm.org/dev/core/-/issues/1983):
574 [18290](https://github.com/civicrm/civicrm-core/pull/18290))**
576 - **Downloaded Invoice activity attaches non wkhtmltopdf invoice
577 ([dev/core#1922](https://lab.civicrm.org/dev/core/-/issues/1922):
578 [18056](https://github.com/civicrm/civicrm-core/pull/18056))**
580 Downloading an invoice would ignore whether wkhtmltopdf was configured and
583 - **Fix repeattransaction api to use custom data from the template contribution
584 ([17975](https://github.com/civicrm/civicrm-core/pull/17975))**
586 The Contribution.repeattransaction API will now copy custom data from the
587 template rather than the earliest related contribution.
591 - **Can't meaningfully disable self-service transfer/cancellation once enabled
592 ([dev/event#35](https://lab.civicrm.org/dev/event/-/issues/35):
593 [18040](https://github.com/civicrm/civicrm-core/pull/18040))**
595 - **Event registration form has inconsistent labeling
596 ([dev/event#38](https://lab.civicrm.org/dev/event/-/issues/38):
597 [17695](https://github.com/civicrm/civicrm-core/pull/17695))**
599 - **Event cart hidden/enabled in buildkit 5.29 RC
600 ([dev/event#40](https://lab.civicrm.org/dev/event/-/issues/40):
601 [18101](https://github.com/civicrm/civicrm-core/pull/18101))**
603 Ensures that the Event Cart functionality defaults to off.
607 - **Remove URL-tracking in mass SMS
608 ([dev/core#1843](https://lab.civicrm.org/dev/core/-/issues/1843):
609 [17700](https://github.com/civicrm/civicrm-core/pull/17700))**
611 Rewritten URLs were confusing and made SMS messages unnecessarily long. There
612 also have never been SMS tracking reports to use them anyway.
614 - **Test mailings create new contacts even when "Add Contacts" permission is not
615 present. ([dev/mail#70](https://lab.civicrm.org/dev/mail/-/issues/70):
616 [17867](https://github.com/civicrm/civicrm-core/pull/17867))**
618 Ensures contacts are not created when a user without permissions to create
619 contacts sends a test email.
621 - **Mailing Subscription form does not validate reCAPTCHA
622 ([dev/core#1755](https://lab.civicrm.org/dev/core/-/issues/1755):
623 [17305](https://github.com/civicrm/civicrm-core/pull/17305))**
625 - **Text version of unsubscribed email is missing the link to resubscribe
626 ([dev/core#1919](https://lab.civicrm.org/dev/core/-/issues/1919):
627 [18015](https://github.com/civicrm/civicrm-core/pull/18015))**
629 - **Add CiviMail synchronisation frequency setting
630 (in support of [dev/core#1768](https://lab.civicrm.org/dev/core/-/issues/1768):
631 [17709](https://github.com/civicrm/civicrm-core/pull/17709))**
633 This adds a setting for updating how frequently the database should be updated
634 with the status of emails that have been sent. Updating the database more
635 frequently can slow the process down, but it reduces the likelihood that a
636 recipient will be re-emailed when recovering from a stalled mailing.
638 - **Mark the new routes for "open.php" and "url.php" as public
639 ([17813](https://github.com/civicrm/civicrm-core/pull/17813))**
641 This denotes the paths for open and URL tracking as "public" pages as they are
642 meant to be used by unauthenticated email clients and recipients.
646 - **Decimal Separator - Invalid value "total_amount" (NaN,N) creating or editing
647 a membership ([dev/core#1113](https://lab.civicrm.org/dev/core/-/issues/1113):
648 [16429](https://github.com/civicrm/civicrm-core/pull/16429))**
650 - **Offline Membership Renewal Tax Calculation is incorrect [regression]
651 ([dev/core#1972](https://lab.civicrm.org/dev/core/-/issues/1972):
652 [18271](https://github.com/civicrm/civicrm-core/pull/18271))**
654 ### Drupal Integration
656 - **Drupal 8 - Using Create User Record action on a contact with no email is too
657 quiet. Also CRM_Core_Session::setStatus is sometimes ignored.
658 ([dev/drupal#127](https://lab.civicrm.org/dev/drupal/-/issues/127):
659 [17914](https://github.com/civicrm/civicrm-core/pull/17914) and
660 [17915](https://github.com/civicrm/civicrm-core/pull/17915))**
662 Require email when adding a user and ensure that errors show.
664 - **The following PHP variables are not set: $_SERVER[HTTP_HOST]
665 ([dev/core#750](https://lab.civicrm.org/dev/core/-/issues/750):
666 [17636](https://github.com/civicrm/civicrm-core/pull/17636))**
668 Skip the server variable checks if running in a CLI environment, removing an
669 error when running Drush commands against Drupal 8 and Drupal 9 based sites.
671 - **Can't find reCAPTCHA in Drupal 8
672 ([dev/core#1871](https://lab.civicrm.org/dev/core/-/issues/1871):
673 [17822](https://github.com/civicrm/civicrm-core/pull/17822))**
675 - **Fixed for multi-select filter
676 ([615](https://github.com/civicrm/civicrm-drupal/pull/615))**
678 This fixes filters for multi-select fields in Views.
680 - **Fix URL for file field
681 ([608](https://github.com/civicrm/civicrm-drupal/pull/608))**
683 This fixes the generated URL for file fields in Views.
685 ### Wordpress Integration
687 - **[civicrm.files] token doesn't work in some cases since 5.27
688 ([dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66):
689 [18068](https://github.com/civicrm/civicrm-core/pull/18068))**
691 Ensures the [civicrm.files] token plays nice for sites with older WordPress
692 file directory set ups.
694 - **CiviCRM and the WordPress Pods plugin (since version 2.7.13) is incompatible
695 due to Pods including marionette v3.3.1 for backbone, newer than CiviCRM's
696 bundled marionette v1.0.3
697 ([dev/core#1090](https://lab.civicrm.org/dev/core/-/issues/1090):
698 [17855](https://github.com/civicrm/civicrm-core/pull/17855))**
700 Ensures CiviCRM plays nicely with recent versions of Elementor Plugin.
702 - **Fix PHP notice on WordPress permissions form
703 ([17758](https://github.com/civicrm/civicrm-core/pull/17758))**
705 - **Slow down the frequency of WordPress "heartbeat" calls in CiviCRM admin
706 ([dev/wordpress#67](https://lab.civicrm.org/dev/wordpress/-/issues/67):
707 [214](https://github.com/civicrm/civicrm-wordpress/pull/214))**
709 - **Be more forgiving about slash in wpBasePage ([dev/wordpress#73](https://lab.civicrm.org/dev/wordpress/issues/73):
710 [18332](https://github.com/civicrm/civicrm-core/pull/18332))**
712 ## <a name="misc"></a>Miscellany
714 - **APIv4 - Add BasicEntity helper class
715 ([17899](https://github.com/civicrm/civicrm-core/pull/17899))**
717 - **Bump minimum upgradable version to 4.4.7
718 ([17750](https://github.com/civicrm/civicrm-core/pull/17750))**
720 - **Update version in the test_data_second_domain file and also update the
721 setVersion script to update the file version as necessary
722 ([17897](https://github.com/civicrm/civicrm-core/pull/17897))**
724 - **Be a little less supportive to cvs
725 ([17896](https://github.com/civicrm/civicrm-core/pull/17896))**
727 - **Replace a load of references to the wiki with docs links
728 ([17900](https://github.com/civicrm/civicrm-core/pull/17900))**
730 - **Remove unneccessary isoToDate function
731 ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921):
732 [18025](https://github.com/civicrm/civicrm-core/pull/18025))**
734 - **CRM_Activity_Form_SearchTest::testQill can fail semi-randomly
735 ([dev/core#1894](https://lab.civicrm.org/dev/core/-/issues/1894):
736 [17902](https://github.com/civicrm/civicrm-core/pull/17902))**
738 - **Test for fatal error on new individual form
739 ([dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
740 [17835](https://github.com/civicrm/civicrm-core/pull/17835))**
742 - **Bump lodash from 4.17.15 to 4.17.19
743 ([17858](https://github.com/civicrm/civicrm-core/pull/17858))**
745 - **Update regen.sh with new & upcoming core extensions
746 ([17839](https://github.com/civicrm/civicrm-core/pull/17839))**
748 - **APIv4 - Add activity contacts to APIv4 field spec
749 ([17766](https://github.com/civicrm/civicrm-core/pull/17766))**
751 - **Adjust mysql SET NAMES in remaining places as we agreed this was the go
752 ([17825](https://github.com/civicrm/civicrm-core/pull/17825))**
754 - **CRM_Utils_SQL - Add "onDuplicate()" and "syncInto()" helpers
755 ([17780](https://github.com/civicrm/civicrm-core/pull/17780))**
757 - **Improve efficiency of findFiles
758 ([17745](https://github.com/civicrm/civicrm-core/pull/17745))**
760 - **APIv4 Explorer: Improve selection of fields for HAVING
761 ([17746](https://github.com/civicrm/civicrm-core/pull/17746))**
763 - **Convert CRM.utils.formatDate tests to karma
764 ([17757](https://github.com/civicrm/civicrm-core/pull/17757))**
766 - **Teach CRM.utils.formatDate to also show time
767 ([17684](https://github.com/civicrm/civicrm-core/pull/17684))**
769 - **CRM_Utils_Hook: deprecation warning and short array syntax
770 ([17995](https://github.com/civicrm/civicrm-core/pull/17995))**
772 - **Remove check for valid email in synchronizeUFMatch
773 ([17771](https://github.com/civicrm/civicrm-core/pull/17771))**
775 - **Remove unused "ufUniqID" session variable
776 ([17904](https://github.com/civicrm/civicrm-core/pull/17904))**
778 - **Remove duplicate cache flush
779 ([17988](https://github.com/civicrm/civicrm-core/pull/17988))**
781 - **Remove extraneous opportunistic cache flush.
782 ([17936](https://github.com/civicrm/civicrm-core/pull/17936))**
784 - **Hooks/Dispatcher - Close loopholes that occur around "preboot" hooks
785 ([17831](https://github.com/civicrm/civicrm-core/pull/17831))**
787 - **Use PrematureExit exception instead of weird hack in tests
788 ([17870](https://github.com/civicrm/civicrm-core/pull/17870))**
790 - **Remove unnecessary try/catch per #17729
791 ([17823](https://github.com/civicrm/civicrm-core/pull/17823))**
793 - **handlePaymentNotification() should not be declared as a static method
794 ([17849](https://github.com/civicrm/civicrm-core/pull/17849))**
796 - **MembershipRenewalTest - Fix failure
797 ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
799 - **Remove hard coded charset.
800 ([17826](https://github.com/civicrm/civicrm-core/pull/17826))**
802 - **getLoggedInContactID() is a static function
803 ([17783](https://github.com/civicrm/civicrm-core/pull/17783))**
805 - **Remove PaymentExpress ipn class
806 ([17763](https://github.com/civicrm/civicrm-core/pull/17763))**
808 - **Remove unused, deprecated functions
809 ([17761](https://github.com/civicrm/civicrm-core/pull/17761))**
811 - **CIVICRM_BAO_CACHE_ADAPTER - Remove obsolete option
812 ([17990](https://github.com/civicrm/civicrm-core/pull/17990))**
814 - **More unused functions in GenCode
815 ([17756](https://github.com/civicrm/civicrm-core/pull/17756))**
817 - **Temporary tables should follow consistent naming convention
818 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
819 [17827](https://github.com/civicrm/civicrm-core/pull/17827))**
821 - **CRM_Core_BAO_Cache - Remove functions deprecated a year ago
822 ([17989](https://github.com/civicrm/civicrm-core/pull/17989))**
824 - **Fix all core processors to implement doPayment and not doTransferPayment or
826 ([https://lab.civicrm.org/dev/financial/-/issues/135](https://lab.civicrm.org/dev/financial/-/issues/135):
827 [18078](https://github.com/civicrm/civicrm-core/pull/18078) and
828 [18072](https://github.com/civicrm/civicrm-core/pull/18072))**
830 - **[REF] Extract setUserContext on contribution form & cleanup on backend add
832 ([17968](https://github.com/civicrm/civicrm-core/pull/17968))**
834 - **[REF] remove unnecessary variable variables
835 ([17903](https://github.com/civicrm/civicrm-core/pull/17903))**
837 - **[REF] - Add helper function for the repetitive task of fetching multilingual
838 ([17650](https://github.com/civicrm/civicrm-core/pull/17650))**
840 - **[REF] Unit test attempt to create reported bugs , minor cleanup
841 ([17560](https://github.com/civicrm/civicrm-core/pull/17560))**
843 - **[REF] Extract addToRecentItems from membership create
844 ([17524](https://github.com/civicrm/civicrm-core/pull/17524))**
846 - **[REF] Fix a couple of jQuery errors that have cropped up
847 ([17871](https://github.com/civicrm/civicrm-core/pull/17871))**
849 - **[REF] regen.sh - Remove unusual handling of `zipcodes.mysql`
850 ([17869](https://github.com/civicrm/civicrm-core/pull/17869))**
852 - **[REF] ScheduledJob cleanup, remove unused var
853 ([17862](https://github.com/civicrm/civicrm-core/pull/17862))**
855 - **[REF] Migrate Event Cart Setting into the Extension
856 ([17841](https://github.com/civicrm/civicrm-core/pull/17841))**
858 - **[REF] Only printOnly once
859 ([17850](https://github.com/civicrm/civicrm-core/pull/17850))**
861 - **[REF] APIv4 ConformanceTest - Split apart into per-entity sub-tests
862 ([17845](https://github.com/civicrm/civicrm-core/pull/17845))**
864 - **[REF] WebsiteTest - Mitigate flaky failures
865 ([17833](https://github.com/civicrm/civicrm-core/pull/17833))**
867 - **[REF] Follow up cleanup
868 ([17788](https://github.com/civicrm/civicrm-core/pull/17788))**
870 - **[REF] Remove ACL join on temp table creation in Member ContributionDetail
871 report ([17723](https://github.com/civicrm/civicrm-core/pull/17723))**
873 - **[REF] Do or do not - there is no try
874 ([17795](https://github.com/civicrm/civicrm-core/pull/17795))**
876 - **[REF] Unused interface CRM_Report_Interface
877 ([17767](https://github.com/civicrm/civicrm-core/pull/17767))**
879 - **[REF] - Cleanup StatusPreference BAO to be more standard
880 ([17801](https://github.com/civicrm/civicrm-core/pull/17801))**
882 - **[REF] Reduce interaction between dedupe code and createProfileContact
883 ([17920](https://github.com/civicrm/civicrm-core/pull/17920))**
885 - **[REF] Simplify field reference
886 ([17941](https://github.com/civicrm/civicrm-core/pull/17941))**
888 - **[REF] [Test] Minor simplification on test
889 ([18019](https://github.com/civicrm/civicrm-core/pull/18019))**
891 - **[REF] Simplify is_email_receipt in sendMail
892 ([18029](https://github.com/civicrm/civicrm-core/pull/18029))**
894 - **[REF] Remove transaction from BaseIPN completeTransaction call
895 ([18042](https://github.com/civicrm/civicrm-core/pull/18042))**
897 - **[REF] Simplify membership status date handling
898 ([18030](https://github.com/civicrm/civicrm-core/pull/18030))**
900 - **[REF] Clean up handling of financial_type_id override
901 ([18032](https://github.com/civicrm/civicrm-core/pull/18032))**
903 - **[REF] Remove transaction from completeOrder signature
904 ([18046](https://github.com/civicrm/civicrm-core/pull/18046))**
906 - **[REF] Remove transaction instantiation in PaypalPro
907 ([18026](https://github.com/civicrm/civicrm-core/pull/18026))**
909 - **[REF] Stop instantiating transaction in PaypalIPN
910 ([18020](https://github.com/civicrm/civicrm-core/pull/18020))**
912 - **[REF] Remove pass-by-reference & always empty param
913 ([17984](https://github.com/civicrm/civicrm-core/pull/17984))**
915 - **[REF] Tighten up function signature for dedupePair
916 ([17923](https://github.com/civicrm/civicrm-core/pull/17923))**
918 - **[REF] Move noisily deprecate BaseIPN->sendMail, call api from it rather
920 ([17982](https://github.com/civicrm/civicrm-core/pull/17982))**
922 - **[REF] Use CRM_Utils_Mail::send for sending emails for confirming unsubscribe
923 resubscribe auto replies and subscribing
924 ([17396](https://github.com/civicrm/civicrm-core/pull/17396))**
926 - **[REF] Reduce calls to CRM_Member_PseudoConstant::membershipType
927 ([17987](https://github.com/civicrm/civicrm-core/pull/17987))**
929 - **[REF] Use Standard function cacheClause to re-use contact acl cache table
930 ([17707](https://github.com/civicrm/civicrm-core/pull/17707))**
932 - **[REF] Make explicit what we are doing with 'values' in this code
933 ([17979](https://github.com/civicrm/civicrm-core/pull/17979))**
935 - **[REF] Minor code clean up
936 ([17974](https://github.com/civicrm/civicrm-core/pull/17974))**
938 - **[REF] Grant cleanup
939 ([17967](https://github.com/civicrm/civicrm-core/pull/17967))**
941 - **[REF] Refactor to use the standard CRM_Core_Form::addRadio function for a
942 number of radio elements
943 ([17932](https://github.com/civicrm/civicrm-core/pull/17932))**
945 - **[REF] Fix the default to_financial_account_id for generated transactions
946 ([17938](https://github.com/civicrm/civicrm-core/pull/17938))**
948 - **[REF] Upgrade dompdf version to be more compatible with PHP7.4
949 ([17946](https://github.com/civicrm/civicrm-core/pull/17946))**
951 - **[REF] [Tests] Cleanup test declaration to take advantage of mapping
952 improvements ([17939](https://github.com/civicrm/civicrm-core/pull/17939))**
954 - **[REF] Remove unnecessary complexity on im export
955 ([17949](https://github.com/civicrm/civicrm-core/pull/17949))**
957 - **[REF] GroupContact BAO - Minor code cleanup
958 ([17928](https://github.com/civicrm/civicrm-core/pull/17928))**
960 - **[REF] Minor function signuture cleanup
961 ([17922](https://github.com/civicrm/civicrm-core/pull/17922))**
963 - **[REF] Do not pass variable by reference
964 ([17921](https://github.com/civicrm/civicrm-core/pull/17921))**
966 - **[REF] remove first attempt to set currency in repeattransaction flow
967 ([18055](https://github.com/civicrm/civicrm-core/pull/18055))**
969 - **[REF] Even less variable variables
970 ([18058](https://github.com/civicrm/civicrm-core/pull/18058))**
972 - **[REF] Move handling of form elements back to the Form
973 ([17981](https://github.com/civicrm/civicrm-core/pull/17981))**
975 - **[REF] Simplify location metadata handling in Export class
976 ([17951](https://github.com/civicrm/civicrm-core/pull/17951))**
978 - **[REF] Do not pass by reference to the recur function
979 ([18057](https://github.com/civicrm/civicrm-core/pull/18057))**
981 - **[REF] Simplify getMembershipStatusByDate more
982 ([18051](https://github.com/civicrm/civicrm-core/pull/18051))**
984 - **[REF] Remove mail_mime package as now supplied by composer
985 ([300](https://github.com/civicrm/civicrm-packages/pull/300))**
987 - **[REF] Remove some deprecated size function calls replaced with length
988 ([299](https://github.com/civicrm/civicrm-packages/pull/299))**
990 - **Refactor "applyLocale" and remove references to "language" column in UFMatch
991 table ([18049](https://github.com/civicrm/civicrm-core/pull/18049))**
993 - **[NFC] Fix provider unit test on PHP7.4
994 ([18073](https://github.com/civicrm/civicrm-core/pull/18073))**
996 - **[NFC] Docblock cleanup
997 ([610](https://github.com/civicrm/civicrm-drupal/pull/610))**
999 - **[NFC] Update versions file to remove reference to Mail_mime and Mail
1000 ([301](https://github.com/civicrm/civicrm-packages/pull/301))**
1002 - **[NFC] Re run regen after recent merges
1003 ([17842](https://github.com/civicrm/civicrm-core/pull/17842))**
1005 - **[NFC] Fix nonstandard header comments
1006 ([17880](https://github.com/civicrm/civicrm-core/pull/17880))**
1008 - **[NFC] Add in a unit test of calling the contribution page widget endpoint
1009 and remove unneeded file
1010 ([17965](https://github.com/civicrm/civicrm-core/pull/17965))**
1012 - **[NFC] Improve docs for APIv4 Save action
1013 ([18004](https://github.com/civicrm/civicrm-core/pull/18004))**
1015 - **[NFC] Docblock cleanup
1016 ([17945](https://github.com/civicrm/civicrm-core/pull/17945))**
1018 - **[NFC] Update a few doc/wiki links in code comments
1019 ([17918](https://github.com/civicrm/civicrm-core/pull/17918))**
1021 - **[NFC] Comment block cleanup
1022 ([17872](https://github.com/civicrm/civicrm-core/pull/17872))**
1024 - **[Test] Update hook signature in test
1025 ([609](https://github.com/civicrm/civicrm-drupal/pull/609))**
1027 - **[Test] Attempt to replicate #17852
1028 ([18038](https://github.com/civicrm/civicrm-core/pull/18038))**
1030 - **[Test fix] We might need this to ensure really quick test runs don't fail
1031 ([18045](https://github.com/civicrm/civicrm-core/pull/18045))**
1033 - **Add testing to Authorize.net and remove the lines that are repeated
1034 ([18028](https://github.com/civicrm/civicrm-core/pull/18028))**
1036 - **Add test on status calculation
1037 ([18037](https://github.com/civicrm/civicrm-core/pull/18037))**
1039 - **Fix for failing test
1040 ([18036](https://github.com/civicrm/civicrm-core/pull/18036))**
1042 - **[Test framework] re-re-fix test and add test for test
1043 ([18013](https://github.com/civicrm/civicrm-core/pull/18013))**
1045 - **Re-fix test ([18009](https://github.com/civicrm/civicrm-core/pull/18009))**
1047 - **[Test framework] - Update failing test
1048 ([18003](https://github.com/civicrm/civicrm-core/pull/18003))**
1050 - **[Test framework] - Combine triplicate createCase functions
1051 ([17957](https://github.com/civicrm/civicrm-core/pull/17957))**
1053 - **Remove error checking by-pass in tests
1054 ([17940](https://github.com/civicrm/civicrm-core/pull/17940))**
1056 - **[Test Framework] - Tests for report downloads
1057 ([17892](https://github.com/civicrm/civicrm-core/pull/17892))**
1059 - **api_v3_TaxContributionPageTest - Remove hard coded processor id
1060 ([17860](https://github.com/civicrm/civicrm-core/pull/17860))**
1062 - **API tests - label versions in dataprovider versionThreeAndFour
1063 ([17847](https://github.com/civicrm/civicrm-core/pull/17847))**
1065 - **Extract code to set isEmailReceipt in Contribution.completeOrder
1066 ([18039](https://github.com/civicrm/civicrm-core/pull/18039))**
1068 - **Do not pass-by-reference to recur function
1069 ([18071](https://github.com/civicrm/civicrm-core/pull/18071))**
1071 - **Unused functions in GenCode
1072 ([17753](https://github.com/civicrm/civicrm-core/pull/17753))**
1074 - **Fix typo in templates/CRM/Report/Form/Tabs/GroupBy.tpl
1075 ([17747](https://github.com/civicrm/civicrm-core/pull/17747))**
1077 - **Remove unused "ufUniqID" session variable
1078 ([213](https://github.com/civicrm/civicrm-wordpress/pull/213))**
1080 - **Remove Net packages Net_Curl Net_DIME as they do not appear to be used
1081 ([294](https://github.com/civicrm/civicrm-packages/pull/294))**
1083 - **Update contributor key for Andrew
1084 ([18230](https://github.com/civicrm/civicrm-core/pull/18230))**
1087 ([18041](https://github.com/civicrm/civicrm-core/pull/18041))**
1089 - **Update flexmailer release information
1090 ([17912](https://github.com/civicrm/civicrm-core/pull/17912))**
1092 - **Remove invalid use of crmMoney formatter
1093 ([18031](https://github.com/civicrm/civicrm-core/pull/18031))**
1095 - **Remove main PaymentExpress class
1096 ([18010](https://github.com/civicrm/civicrm-core/pull/18010))**
1098 - **Remove unused parameter ids['billing']
1099 ([18021](https://github.com/civicrm/civicrm-core/pull/18021))**
1101 - **Cache loader - remove legacy handling, handle null result from setting
1102 ([17999](https://github.com/civicrm/civicrm-core/pull/17999))**
1104 - **Use case id to get relationship for activity creation
1105 ([17256](https://github.com/civicrm/civicrm-core/pull/17256) and
1106 [17764](https://github.com/civicrm/civicrm-core/pull/17764))**
1108 ## <a name="credits"></a>Credits
1110 This release was developed by the following code authors:
1112 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
1113 Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma,
1114 Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
1115 Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra
1116 Purohit; iXiam - César Ramos, Diego Muñio; JMA Consulting - Monish Deb, Seamus
1117 Lee; John Kingsnorth; Joinery - Allen Shaw; Lighthouse Consulting and Design -
1118 Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech -
1119 Chamil Wijesooriya; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire;
1120 Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan
1121 Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Timbsoft
1122 Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton
1124 Most authors also reviewed code for this release; in addition, the following
1125 reviewers contributed their comments:
1127 Agileware - Pengyi Zhang; Andrew Thompson; Artful Robot - Rich Lott; Australian
1128 Greens - Andrew Cormick-Dockery, John Twyman; Bastien Ho; Blackfly Solutions -
1129 Alan Dixon; Carlos Capote; CompuCorp - Jamie Novick; DevApp - Adam Kwiatkowski;
1130 Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Greenpeace
1131 Central and Eastern Europe - Patrick Figel; Irene Meisel; JMA Consulting - Joe
1132 Murray; Korlon - Stuart Gaston; Nicol Wistreich; Rar9; Ray Wright; Semper IT -
1133 Karin Gerritsen; Third Sector Design - Michael McAndrew
1135 ## <a name="feedback"></a>Feedback
1137 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
1138 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1139 and contact `@agh1`.