3 Released December 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? | no |
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 - **Display public title and description on profiles and unsubscribe/subscribe
29 forms as appropriate if set
30 ([18645](https://github.com/civicrm/civicrm-core/pull/18645))**
32 Starts to make use of the new front end title and description fields on
33 unsubscribe, subscribe and user dashboard pages.
35 - **Allow custom fields of type Autocomplete-Select to be multivalued
36 ([18449](https://github.com/civicrm/civicrm-core/pull/18449))**
38 Adds support for multi-select for auto-complete custom fields.
40 - **Add more columns for Activity Report (Work towards
41 [dev/core#2104](https://lab.civicrm.org/dev/core/-/issues/2104):
42 [18827](https://github.com/civicrm/civicrm-core/pull/18827) and
43 [18840](https://github.com/civicrm/civicrm-core/pull/18840))**
45 Improves the Activity Report by adding columns for:
46 - Birth Date of the target contact
47 - Gender of the target contact
49 - **More accurate language around social media sharing
50 ([18743](https://github.com/civicrm/civicrm-core/pull/18743))**
52 Improves user experience by clarifying language around social media sharing.
54 - **Adds performance improvement when browsing the report logs
55 ([18851](https://github.com/civicrm/civicrm-core/pull/18851))**
57 Improves performance when browsing the logs.
59 - **Clean up search actions in core to make them available from search builder
60 (Work Towards [dev/core#2066](https://lab.civicrm.org/dev/core/-/issues/2066):
61 [18773](https://github.com/civicrm/civicrm-core/pull/18773),
62 [18783](https://github.com/civicrm/civicrm-core/pull/18783),
63 [18768](https://github.com/civicrm/civicrm-core/pull/18768) and
64 [18767](https://github.com/civicrm/civicrm-core/pull/18767))**
66 Preliminary cleanup of code to move towards making search actions available
69 - **Search Kit: Lotsa new features
70 ([18876](https://github.com/civicrm/civicrm-core/pull/18876))**
72 Integrates Search Kit/Afform. Adds a standalone page for viewing search kit
73 displays. Adds first search kit display type "table". Adds search kit display
74 entity and UI. Adds CRUD form for managing saved search kit searches.
76 - **Search Kit: Add links to search admin and improve links in displays
77 ([18909](https://github.com/civicrm/civicrm-core/pull/18909))**
79 Improves links in search kit results.
81 - **Search Kit: Bind parameters to URL
82 ([#18976](https://github.com/civicrm/civicrm-core/pull/18976))**
84 - **Search Kit: Add "List" display. Fix other bugs.
85 ([#18999](https://github.com/civicrm/civicrm-core/pull/18999))**
87 - **Search Kit: Improve options in "List" search display
88 ([19031](https://github.com/civicrm/civicrm-core/pull/19031/files))**
90 - **SavedSearch - Add name and label columns
91 ([18809](https://github.com/civicrm/civicrm-core/pull/18809))**
93 Adds 2 database columns: `name` and `label` for the SavedSearch entity. This
94 is needed by the new Search Kit extension.
96 - **Add entity paths to schema & APIv4
97 ([18887](https://github.com/civicrm/civicrm-core/pull/18887))**
99 Adds metadata to some entities (hopefully more will be added in the
100 future) for the paths at which they can be created/updated/viewed/deleted. The
101 metadata is accessed via the DAO, and exposed to APIv4.
103 - **Use standard names for entity paths and add a few more paths
104 ([18915](https://github.com/civicrm/civicrm-core/pull/18915))**
106 Standardizes entity paths.
108 - **APIv4 - Add `$result->single()` helper
109 ([18871](https://github.com/civicrm/civicrm-core/pull/18871))**
111 Improves developer-experience when using APIv4 by adding a helper function to
112 retrieve just one result.
114 - **Update CRM_Utils_Constant::value to support env variables
115 ([18806](https://github.com/civicrm/civicrm-core/pull/18806))**
117 Extends the ability to set a variable using env to any variable accessed via
118 CRM_Utils_Constant::value.
120 - **Angular Loader: Allow modules to specify permissions to add client-side
121 ([18754](https://github.com/civicrm/civicrm-core/pull/18754))**
123 Makes it possible for angular modules to define permissions.
125 - **AngularLoader: Support 'settingsFactory' callbacks in angular modules.
126 ([18731](https://github.com/civicrm/civicrm-core/pull/18731))**
128 Allows Angular modules with complex/expensive data to provide it with a
129 callback, which will only be invoked if the module is actively loaded on the
134 - **Use of <th> tags for labels on Contribution Amounts tab gives them unique
136 ([dev/user-interface#34](https://lab.civicrm.org/dev/user-interface/-/issues/34):
137 [18850](https://github.com/civicrm/civicrm-core/pull/18850))**
139 Makes the look and feel when configuring Contribution Forms more consistent.
141 - **[Meta] Does CiviCRM have a single defined application HTTP entry point which
143 (Work Towards [dev/cloud-native#16](https://lab.civicrm.org/dev/cloud-native/-/issues/16):
144 [17969](https://github.com/civicrm/civicrm-core/pull/17969))**
146 Migrates the Contribution Page widget extern url to use the normal CMS routing
149 - **Add UI metadata for payment_processor_id on financialTrxn
150 ([18917](https://github.com/civicrm/civicrm-core/pull/18917))**
152 Improve metadata for `financialTrxn`.
156 - **OAuth2 Client ([dev/core#2141](https://lab.civicrm.org/dev/core/-/issues/2141):
157 [18902](https://github.com/civicrm/civicrm-core/pull/18902),
158 [18914](https://github.com/civicrm/civicrm-core/pull/18914),
159 [18885](https://github.com/civicrm/civicrm-core/pull/18885),
160 [18908](https://github.com/civicrm/civicrm-core/pull/18908),
161 [18943](https://github.com/civicrm/civicrm-core/pull/18943),
162 [18955](https://github.com/civicrm/civicrm-core/pull/18955),
163 [18951](https://github.com/civicrm/civicrm-core/pull/18951), and
164 [19001](https://github.com/civicrm/civicrm-core/pull/19001))**
166 Adds a new hook `hook_civicrm_alterMailStore` which can be used to add or
167 modify a driver. Adds a hidden `oauth-client` extension for connecting to
168 OAuth2-based-web-services. Adds a UI to "Add Mail Account". Adds two
169 libraries: "league/oauth2-client" and "league/oauth2-google".
171 - **MailSettings - Add button+API for testing a connection
172 ([18911](https://github.com/civicrm/civicrm-core/pull/18911))**
174 Adds a button (and API action) to the Edit Mail Account form to test the
177 - **Add postProcess hook to MessageTemplates
178 ([18807](https://github.com/civicrm/civicrm-core/pull/18807))**
180 Makes it so extension developers can use the 'postProcess' hook to access
183 ### WordPress Integration
185 - **MySQL socket while using CiviCRM installer
186 ([dev/wordpress#35](https://lab.civicrm.org/dev/wordpress/-/issues/35):
187 [18913](https://github.com/civicrm/civicrm-core/pull/18913))**
189 Ensures `civicrm-setup` can handle database connections with unix sockets.
191 ## <a name="bugs"></a>Bugs resolved
195 - **Fix main contact uf url on merge screen
196 ([18742](https://github.com/civicrm/civicrm-core/pull/18742))**
198 Ensures the UF url of the main contact on the merge screen points to the
201 - **Fix sendconfirmation api to override receipt params
202 ([18789](https://github.com/civicrm/civicrm-core/pull/18789))**
204 Ensures params in `sendconfirmation` API take precedence over receipt params.
206 - **"Non-static method CRM_Contact_Page_AJAX::pdfFormat() should not be called
207 statically" when changing the page format on print/merge document
208 ([dev/core#2110](https://lab.civicrm.org/dev/core/-/issues/2110):
209 [18726](https://github.com/civicrm/civicrm-core/pull/18726))**
211 Fixes notices when generating PDFs.
213 - **updated italian provinces
214 ([18859](https://github.com/civicrm/civicrm-core/pull/18859))**
216 Ensures that the right abbreviations are used for Italian provinces.
218 - **APIv4 Activity::update() causes target contacts and assignees to be deleted
219 ([dev/core#1428](https://lab.civicrm.org/dev/core/-/issues/1428):
220 [18720](https://github.com/civicrm/civicrm-core/pull/18720))**
224 - **APIv4 - Fix type coersion of non-string input
225 ([18860](https://github.com/civicrm/civicrm-core/pull/18860))**
227 Fixes APIv4 to not accidentally change non-string input to string.
229 - **Participant Calculate/Fees: fix ts usage, simplify wording
230 ([18874](https://github.com/civicrm/civicrm-core/pull/18874))**
232 Fixes an incorrect use of ts, which assumes how strings can be concatenated.
233 It also makes it difficult to use Word Replacements.
235 - **Cancel first contribution associated to membership, cancels the membership
236 ([dev/core#927](https://lab.civicrm.org/dev/core/-/issues/927):
237 [18814](https://github.com/civicrm/civicrm-core/pull/18814),
238 [18812](https://github.com/civicrm/civicrm-core/pull/18812),
239 [18853](https://github.com/civicrm/civicrm-core/pull/18853),
240 [18786](https://github.com/civicrm/civicrm-core/pull/18786),
241 [18881](https://github.com/civicrm/civicrm-core/pull/18881),
242 [18813](https://github.com/civicrm/civicrm-core/pull/18813) and
243 [18784](https://github.com/civicrm/civicrm-core/pull/18784))**
245 - **When default changed for an alphanumeric multi-select custom field
246 defaulting breaks for that field on backend
247 forms.([dev/core#2139](https://lab.civicrm.org/dev/core/-/issues/2139):
248 [18907](https://github.com/civicrm/civicrm-core/pull/18907))**
250 - **Long cyrillic names give error Data too long for column sort_name when
252 ([dev/core#2146](https://lab.civicrm.org/dev/core/-/issues/2146):
253 [18862](https://github.com/civicrm/civicrm-core/pull/18862))**
255 - **Incorrect use of quotes and escape and ts in CRM_Core_DAO::copyValues
256 ([dev/core#2148](https://lab.civicrm.org/dev/core/-/issues/2148):
257 [18864](https://github.com/civicrm/civicrm-core/pull/18864))**
259 - **CiviCRM reCAPTCHA Util not validating user tokens on form submission
260 ([dev/core#2150](https://lab.civicrm.org/dev/core/-/issues/2150):
261 [18872](https://github.com/civicrm/civicrm-core/pull/18872) and
262 [311](https://github.com/civicrm/civicrm-packages/pull/311))**
264 - **Fix the Test Result (1 failure / -190)
265 E2E.Core.PrevNextTest.testDeleteByCacheKey recurring test issue
266 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
267 [18846](https://github.com/civicrm/civicrm-core/pull/18846))**
269 - **Merge - ensure location entities remaining on deleted contacts have
271 ([dev/core#2047](https://lab.civicrm.org/dev/core/-/issues/2047):
272 [18555](https://github.com/civicrm/civicrm-core/pull/18555))**
274 - **Eliminate unused query on CRM_Core_BAO_CustomQuery::_construct
275 ([dev/core#2079](https://lab.civicrm.org/dev/core/-/issues/2079):
276 [18668](https://github.com/civicrm/civicrm-core/pull/18668))**
278 - **get log date from tables available in query with data instead of last table
279 ([18868](https://github.com/civicrm/civicrm-core/pull/18868))**
281 - **Search ext: Fix validation and saving on search admin screen
282 ([18919](https://github.com/civicrm/civicrm-core/pull/18919))**
284 - **CRM_Core_Error::formatFooException - Don't bomb on 'Error'
285 ([18910](https://github.com/civicrm/civicrm-core/pull/18910))**
287 - **ClassLoader - Fix autoloading of `API_Exception`
288 ([18870](https://github.com/civicrm/civicrm-core/pull/18870))**
290 - **SavedSearch: add UI_name index to upgrade script
291 ([18811](https://github.com/civicrm/civicrm-core/pull/18811))**
293 - **Fix pluralize function for words like 'display'
294 ([18778](https://github.com/civicrm/civicrm-core/pull/18778))**
296 - **class.api.php: In remote api calls, allow referer and useragent to be set.
297 ([18400](https://github.com/civicrm/civicrm-core/pull/18400))**
299 - **Typo in call to fixSchemaDifferencesForAll
300 ([18762](https://github.com/civicrm/civicrm-core/pull/18762))**
302 - **Rationalise date formatting
303 ([18805](https://github.com/civicrm/civicrm-core/pull/18805))**
305 - **Fix filter for users who have permission "view deleted contacts"
306 ([19088](https://github.com/civicrm/civicrm-core/pull/19088))**
311 - **Fix campaign_id handling for batch entry
312 ([18792](https://github.com/civicrm/civicrm-core/pull/18792))**
314 Fixes a bug whereby `campaign_id` is not updated on batch entry if it has been
315 added to the profile.
319 - **Merging contacts removes case roles
320 ([dev/core#2152](https://lab.civicrm.org/dev/core/-/issues/2152):
321 [18884](https://github.com/civicrm/civicrm-core/pull/18884))**
323 - **Fix deprecation notice
324 ([dev/core#2205](https://lab.civicrm.org/dev/core/-/issues/2205): [#19018](https://github.com/civicrm/civicrm-core/pull/19018))**
328 - **finish 'this round' of completeOrder cleanup
329 ([dev/financial#152](https://lab.civicrm.org/dev/financial/-/issues/152):
330 [18631](https://github.com/civicrm/civicrm-core/pull/18631),
331 [18734](https://github.com/civicrm/civicrm-core/pull/18734),
332 [18732](https://github.com/civicrm/civicrm-core/pull/18732),
333 [18733](https://github.com/civicrm/civicrm-core/pull/18733),
334 [18728](https://github.com/civicrm/civicrm-core/pull/18728),
335 [18629](https://github.com/civicrm/civicrm-core/pull/18629),
336 [18835](https://github.com/civicrm/civicrm-core/pull/18835),
337 [18730](https://github.com/civicrm/civicrm-core/pull/18730),
338 [18729](https://github.com/civicrm/civicrm-core/pull/18729).
339 [18737](https://github.com/civicrm/civicrm-core/pull/18737),
340 [18735](https://github.com/civicrm/civicrm-core/pull/18735),
341 [18744](https://github.com/civicrm/civicrm-core/pull/18744),
342 [18736](https://github.com/civicrm/civicrm-core/pull/18736) and
343 [18815](https://github.com/civicrm/civicrm-core/pull/18815))**
345 Cleans up how `completeOrder` deals with `payment_processor_id` (solely as an
348 - **Thank-you letter incorrect contribution currency
349 ([dev/financial#111](https://lab.civicrm.org/dev/financial/-/issues/111):
350 [18714](https://github.com/civicrm/civicrm-core/pull/18714) and
351 [18715](https://github.com/civicrm/civicrm-core/pull/18715))**
353 Ensures that when a contribution is made using a currency other than the
354 default currency, the contribution tokens: {contribution.total_amount}
355 {contribution.fee_amount} {contribution.net_amount} correctly display the
358 - **PayPal payment processor uses deprecated methods, breaking functionality
359 (Work Towards [dev/core#2034](https://lab.civicrm.org/dev/core/-/issues/2034):
360 [18540](https://github.com/civicrm/civicrm-core/pull/18540))**
362 Fixes the PayPal standard cancel url.
364 - **Declare support for cancelRecurring in manual processor
365 ([18804](https://github.com/civicrm/civicrm-core/pull/18804))**
367 Ensure that when no processor id is present the cancel form is loaded (as
368 opposed to the enable-disable form).
370 - **Refund status not set correctly when cancelled_payment_id is set
371 ([dev/financial#156](https://lab.civicrm.org/dev/financial/-/issues/156):
372 [18930](https://github.com/civicrm/civicrm-core/pull/18930))**
374 - **Contribution confirmation page should not display the name of payment
375 processor type ([17568](https://github.com/civicrm/civicrm-core/pull/17568))**
377 - **PCP 'Your Message' should use WYSIWYG
378 ([18411](https://github.com/civicrm/civicrm-core/pull/18411))**
380 - **Fix fatal error on "Edit Contribution" form
381 ([19091](https://github.com/civicrm/civicrm-core/pull/19091))**
383 - **Fix product form such that it is possible to unselec duration unit, frequency unit
384 ([dev/drupal#148](https://lab.civicrm.org/dev/drupal/-/issues/148): [19084](https://github.com/civicrm/civicrm-core/pull/19084))**
389 - **.ical files not populating correctly for sites with ACL's configured for
390 events ([dev/core#1879](https://lab.civicrm.org/dev/core/-/issues/1879):
391 [18712](https://github.com/civicrm/civicrm-core/pull/18712))**
395 - **Set id after save for the mailing component in the postProcess
396 ([18808](https://github.com/civicrm/civicrm-core/pull/18808))**
398 - **"Notice: Undefined index: domain" when deleting a mail account
399 ([dev/core#2166](https://lab.civicrm.org/dev/core/-/issues/2166):
400 [18927](https://github.com/civicrm/civicrm-core/pull/18927))**
402 - **crmMailing - Only load Angular settings if they're needed
403 ([18749](https://github.com/civicrm/civicrm-core/pull/18749))**
405 - **Error when changing "Location Type"
406 ([dev/core#2228](https://lab.civicrm.org/dev/core/-/issues/2228): [19092](https://github.com/civicrm/civicrm-core/pull/19092))**
410 - **Error in the selected phone to send an SMS when the Mobile type label is
411 modified ([dev/core#2138](https://lab.civicrm.org/dev/core/-/issues/2138):
412 [18842](https://github.com/civicrm/civicrm-core/pull/18842))**
414 - **Show only Active SMS provider List on Mass SMS form
415 ([18867](https://github.com/civicrm/civicrm-core/pull/18867))**
417 ### Backdrop Integration
419 - **Override sessionStart function and use backdrop functions as appropriate
421 [backdrop#116](https://github.com/civicrm/civicrm-backdrop/issues/116):
422 [18745](https://github.com/civicrm/civicrm-core/pull/18745))**
424 Overrides the backdrop Session start function in DrupalBase.php to use the
425 backdrop specific functions
427 - **Resolve #110 Sync repo with CiviCRM-Drupal repo
428 ([115](https://github.com/civicrm/civicrm-backdrop/pull/115))**
430 ### Drupal Integration
432 - **Do not manually construct the site path during Drupal8+ setup
433 ([dev/core#2140](https://lab.civicrm.org/dev/core/-/issues/2140):
434 [18843](https://github.com/civicrm/civicrm-core/pull/18843))**
436 - **D8 Install checks run via Drupal Status Report - gives misleading warnings.
437 ([dev/drupal#137](https://lab.civicrm.org/dev/drupal/-/issues/137):
438 [18581](https://github.com/civicrm/civicrm-core/pull/18581))**
440 ### Joomla Integration
442 - **[Joomla 4.0] CiviCRM cannot be installed on Joomla 4.0 alpha
443 ([dev/joomla#14](https://lab.civicrm.org/dev/joomla/-/issues/14):
444 [52](https://github.com/civicrm/civicrm-joomla/pull/52))**
446 ### Wordpress Integration
448 - **Protect against undefined index query in heartbeat callback
449 ([220](https://github.com/civicrm/civicrm-wordpress/pull/220))**
451 ## <a name="misc"></a>Miscellany
453 - **_Composer Patches_: Update to v1.7.0. Support Composer v2. ([#18940](https://github.com/civicrm/civicrm-core/pull/18940))**
455 - **Schema handler fixes
456 ([18932](https://github.com/civicrm/civicrm-core/pull/18932))**
458 - **[cq] Do not pass by reference where avoidable
459 ([dev/core#2043](https://lab.civicrm.org/dev/core/-/issues/2043):
460 [18802](https://github.com/civicrm/civicrm-core/pull/18802))**
462 - **Move financialACLs to a core extension (Work Towards
463 [dev/core#2115](https://lab.civicrm.org/dev/core/-/issues/2115):
464 [18738](https://github.com/civicrm/civicrm-core/pull/18738) and
465 [18740](https://github.com/civicrm/civicrm-core/pull/18740))**
467 - **Move call to update related pledges on contribution cancel to extension
468 ([18894](https://github.com/civicrm/civicrm-core/pull/18894))**
470 - **Move filtering of unpermitted options for reports/ search select to
471 financialacl extension
472 ([18849](https://github.com/civicrm/civicrm-core/pull/18849))**
474 - **Move CRM_Member_BAO_MembershipType::getPermissionedMembershipTypes to
475 financial acl extension
476 ([18848](https://github.com/civicrm/civicrm-core/pull/18848))**
478 - **Replace BAO calls with api calls in test class
479 ([18798](https://github.com/civicrm/civicrm-core/pull/18798))**
481 - **Switch to calling api
482 ([18797](https://github.com/civicrm/civicrm-core/pull/18797))**
484 - **Switch to calling the api
485 ([18796](https://github.com/civicrm/civicrm-core/pull/18796))**
487 - **Extract setNextUrl
488 ([18750](https://github.com/civicrm/civicrm-core/pull/18750))**
490 - **Deprecate hook_civicrm_crudLink
491 ([18888](https://github.com/civicrm/civicrm-core/pull/18888))**
493 - **Fix extension generated DAO files to pass civilint
494 ([18879](https://github.com/civicrm/civicrm-core/pull/18879))**
496 - **Hack away at false negative test fails
497 ([18892](https://github.com/civicrm/civicrm-core/pull/18892))**
499 - **Search Kit - Fix search action button
500 ([19055](https://github.com/civicrm/civicrm-core/pull/19055))**
502 - **Release Notes: Add 5.32.0
503 ([#18958](https://github.com/civicrm/civicrm-core/pull/18958), [#18945](https://github.com/civicrm/civicrm-core/pull/18945))**
505 - **Release Notes: Add 5.31.1
506 ([#19029](https://github.com/civicrm/civicrm-core/pull/19029))**
508 - **Remove always-true IF
509 ([18803](https://github.com/civicrm/civicrm-core/pull/18803))**
511 - **Remove always true if
512 ([18801](https://github.com/civicrm/civicrm-core/pull/18801))**
514 - **Remove always-true & otherwise silly if
515 ([18883](https://github.com/civicrm/civicrm-core/pull/18883))**
517 - **Remove IPN reference to _relatedObjects, deprecate property
518 ([18895](https://github.com/civicrm/civicrm-core/pull/18895))**
520 - **Remove deprecated code
521 ([18903](https://github.com/civicrm/civicrm-core/pull/18903))**
523 - **Remove a few lines of deprecated code
524 ([18826](https://github.com/civicrm/civicrm-core/pull/18826))**
526 - **Remove instances of variable variables
527 ([18791](https://github.com/civicrm/civicrm-core/pull/18791))**
529 - **Remove meaningless legacy code
530 ([18856](https://github.com/civicrm/civicrm-core/pull/18856))**
532 - **Refactor entityParams in Order.Create API so it is easier to
534 ([18306](https://github.com/civicrm/civicrm-core/pull/18306))**
536 - **[REF] Minor simplification - don't use a variable for table name
537 ([18651](https://github.com/civicrm/civicrm-core/pull/18651))**
539 - **[REF] Remove silly if
540 ([18897](https://github.com/civicrm/civicrm-core/pull/18897))**
542 - **[Ref] Move sending the email back out of the recur function
543 ([18852](https://github.com/civicrm/civicrm-core/pull/18852))**
545 - **[Ref] Use direct version of participant id
546 ([18882](https://github.com/civicrm/civicrm-core/pull/18882))**
548 - **[Ref] Simplify params
549 ([18896](https://github.com/civicrm/civicrm-core/pull/18896))**
551 - **[REF] Simplify use of shared code.
552 ([18900](https://github.com/civicrm/civicrm-core/pull/18900))**
554 - **[REF] Minor extraction
555 ([18829](https://github.com/civicrm/civicrm-core/pull/18829))**
557 - **[REF] Determine values where they are needed rather than passing them
558 around (in tested function)
559 ([18837](https://github.com/civicrm/civicrm-core/pull/18837))**
561 - **[REF] Include contributioncancelactions extension in dismaker and reg…
562 ([18825](https://github.com/civicrm/civicrm-core/pull/18825))**
564 - **[REF] Extract handling for loading contribution recur object.
565 ([18746](https://github.com/civicrm/civicrm-core/pull/18746))**
567 - **[REF] Replace long if block with early return
568 ([18747](https://github.com/civicrm/civicrm-core/pull/18747))**
570 - **[REF] Upgrade DomPDF to v0.8.6
571 ([18688](https://github.com/civicrm/civicrm-core/pull/18688))**
573 - **[REF] Separate export form classes out & simplify task handling
574 ([18589](https://github.com/civicrm/civicrm-core/pull/18589))**
576 - **[REF] Search ext: Reorganize code into modules
577 ([18775](https://github.com/civicrm/civicrm-core/pull/18775))**
579 - **[Ref] Minor code extraction
580 ([18739](https://github.com/civicrm/civicrm-core/pull/18739))**
582 - **[Test] - Fix some tests to call API not BAO
583 ([18795](https://github.com/civicrm/civicrm-core/pull/18795))**
585 - **[Test] Ensure all APIv4 entities have basic info
586 ([18727](https://github.com/civicrm/civicrm-core/pull/18727))**
588 - **Test for event#43
589 ([18761](https://github.com/civicrm/civicrm-core/pull/18761))**
591 - **Add test for recurring links and clean up method of retrieving recurring
592 ([18790](https://github.com/civicrm/civicrm-core/pull/18790))**
594 - **unit test for #18306 - order create api test for contribution
595 ([18785](https://github.com/civicrm/civicrm-core/pull/18785))**
597 - **(NFC) Update cache/integration-tests
598 ([19076](https://github.com/civicrm/civicrm-core/pull/19076))**
600 - **(NFC) Fix typo in Money valueFormat depretation warning
601 ([18886](https://github.com/civicrm/civicrm-core/pull/18886))**
603 - **(NFC) Make assertions in PrevNextTest more skimmable
604 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
605 [18822](https://github.com/civicrm/civicrm-core/pull/18822))**
607 ## <a name="credits"></a>Credits
609 This release was developed by the following code authors:
611 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Francis Whittle, Justin
612 Freeman, Pengyi Zhang; Andrew Thompson; Christian Wach; Circle Interactive -
613 Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten;
614 CiviDesk - Sunil Pawar, Yashodha Chaku; CiviFirst - John Kirk; CompuCorp -
615 Debarshi Bhaumik; Coop SymbioTIC - Mathieu Lutfy; Dave D; Diego Muñio; Freeform
616 Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Luciano
617 Spiegel, Vangelis Pantazis; JMA Consulting - Monish Deb, Seamus Lee; John
618 Kingsnorth; Megaphone Technology Consulting - Jon Goldberg; mglaman; MJW
619 Consulting - Matthew Wire; Nicol Wistreich; PERORA SRL- Samuele Masetto;
620 Progressive Technology Project - Jamie McClelland; Richard van Oosterhout;
621 Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton
623 Most authors also reviewed code for this release; in addition, the following
624 reviewers contributed their comments:
626 Artful Robot - Rich Lott; Atomic Development - Max Tsero; Australian Greens -
627 John Twyman; Centarro - Matt Glaman; Fuzion - Luke Stewart; Greenpeace Central
628 and Eastern Europe - Patrick Figel; JMA Consulting - Joe Murray; jvos;
629 Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology
630 Consulting - Jon Goldberg; MJCO - Mikey O'Toole; Semper IT - Karin Gerritsen;
631 Tadpole Collective - Kevin Cristiano;
633 ## <a name="feedback"></a>Feedback
635 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
636 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm