Merge pull request #18916 from colemanw/crudLink
[civicrm-core.git] / release-notes / 5.32.0.md
1 # CiviCRM 5.32.0
2
3 Released December 2, 2020
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
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** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
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))**
31
32 Starts to make use of the new front end title and description fields on
33 unsubscribe, subscribe and user dashboard pages.
34
35 - **Allow custom fields of type Autocomplete-Select to be multivalued
36 ([18449](https://github.com/civicrm/civicrm-core/pull/18449))**
37
38 Adds support for multi-select for auto-complete custom fields.
39
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))**
44
45 Improves the Activity Report by adding columns for:
46 - Birth Date of the target contact
47 - Gender of the target contact
48
49 - **More accurate language around social media sharing
50 ([18743](https://github.com/civicrm/civicrm-core/pull/18743))**
51
52 Improves user experience by clarifying language around social media sharing.
53
54 - **Adds performance improvement when browsing the report logs
55 ([18851](https://github.com/civicrm/civicrm-core/pull/18851))**
56
57 Improves performance when browsing the logs.
58
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))**
65
66 Preliminary cleanup of code to move towards making search actions available
67 from search builder.
68
69 - **Lotsa new features for the Search Kit extension
70 ([18876](https://github.com/civicrm/civicrm-core/pull/18876))**
71
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.
75
76 - **Search ext: Add links to search admin and improve links in displays
77 ([18909](https://github.com/civicrm/civicrm-core/pull/18909))**
78
79 Improves links in search kit results.
80
81 - **SavedSearch - Add name and label columns
82 ([18809](https://github.com/civicrm/civicrm-core/pull/18809))**
83
84 Adds 2 database columns: `name` and `label` for the SavedSearch entity. This
85 is needed by the new Search Kit extension.
86
87 - **Add entity paths to schema & APIv4
88 ([18887](https://github.com/civicrm/civicrm-core/pull/18887))**
89
90 Adds metadata to some entities (hopefully more will be added in the
91 future) for the paths at which they can be created/updated/viewed/deleted. The
92 metadata is accessed via the DAO, and exposed to APIv4.
93
94 - **Use standard names for entity paths and add a few more paths
95 ([18915](https://github.com/civicrm/civicrm-core/pull/18915))**
96
97 Standardizes entity paths.
98
99 - **APIv4 - Add `$result->single()` helper
100 ([18871](https://github.com/civicrm/civicrm-core/pull/18871))**
101
102 Improves developer-experience when using APIv4 by adding a helper function to
103 retrieve just one result.
104
105 - **Update CRM_Utils_Constant::value to support env variables
106 ([18806](https://github.com/civicrm/civicrm-core/pull/18806))**
107
108 Extends the ability to set a variable using env to any variable accessed via
109 CRM_Utils_Constant::value.
110
111 - **Angular Loader: Allow modules to specify permissions to add client-side
112 ([18754](https://github.com/civicrm/civicrm-core/pull/18754))**
113
114 Makes it possible for angular modules to define permissions.
115
116 - **AngularLoader: Support 'settingsFactory' callbacks in angular modules.
117 ([18731](https://github.com/civicrm/civicrm-core/pull/18731))**
118
119 Allows Angular modules with complex/expensive data to provide it with a
120 callback, which will only be invoked if the module is actively loaded on the
121 page.
122
123 ### CiviContribute
124
125 - **Use of <th> tags for labels on Contribution Amounts tab gives them unique
126 styling
127 ([dev/user-interface#34](https://lab.civicrm.org/dev/user-interface/-/issues/34):
128 [18850](https://github.com/civicrm/civicrm-core/pull/18850))**
129
130 Makes the look and feel when configuring Contribution Forms more consistent.
131
132 - **[Meta] Does CiviCRM have a single defined application HTTP entry point which
133 routes all requests?
134 (Work Towards [dev/cloud-native#16](https://lab.civicrm.org/dev/cloud-native/-/issues/16):
135 [17969](https://github.com/civicrm/civicrm-core/pull/17969))**
136
137 Migrates the Contribution Page widget extern url to use the normal CMS routing
138 mechanism.
139
140 - **Add UI metadata for payment_processor_id on financialTrxn
141 ([18917](https://github.com/civicrm/civicrm-core/pull/18917))**
142
143 Improve metadata for `financialTrxn`.
144
145 ### CiviMail
146
147 - **OAuth2 administration (email focus) (Work Towards
148 [dev/core#2141](https://lab.civicrm.org/dev/core/-/issues/2141):
149 [18902](https://github.com/civicrm/civicrm-core/pull/18902),
150 [18914](https://github.com/civicrm/civicrm-core/pull/18914),
151 [18885](https://github.com/civicrm/civicrm-core/pull/18885) and
152 [18908](https://github.com/civicrm/civicrm-core/pull/18908))**
153
154 Adds a new hook `hook_civicrm_alterMailStore` which can be used to add or
155 modify a driver. Adds a hidden `oauth-client` extension for connecting to
156 OAuth2-based-web-services. Adds a UI to "Add Mail Account". Adds two
157 libraries: "league/oauth2-client" and "league/oauth2-google".
158
159 - **MailSettings - Add button+API for testing a connection
160 ([18911](https://github.com/civicrm/civicrm-core/pull/18911))**
161
162 Adds a button (and API action) to the Edit Mail Account form to test the
163 connection.
164
165 - **Add postProcess hook to MessageTemplates
166 ([18807](https://github.com/civicrm/civicrm-core/pull/18807))**
167
168 Makes it so extension developers can use the 'postProcess' hook to access
169 'MessageTemplates'.
170
171 ### WordPress Integration
172
173 - **MySQL socket while using CiviCRM installer
174 ([dev/wordpress#35](https://lab.civicrm.org/dev/wordpress/-/issues/35):
175 [18913](https://github.com/civicrm/civicrm-core/pull/18913))**
176
177 Ensures `civicrm-setup` can handle database connections with unix sockets.
178
179 ## <a name="bugs"></a>Bugs resolved
180
181 ### Core CiviCRM
182
183 - **Fix main contact uf url on merge screen
184 ([18742](https://github.com/civicrm/civicrm-core/pull/18742))**
185
186 Ensures the UF url of the main contact on the merge screen points to the
187 correct user.
188
189 - **Fix sendconfirmation api to override receipt params
190 ([18789](https://github.com/civicrm/civicrm-core/pull/18789))**
191
192 Ensures params in `sendconfirmation` API take precedence over receipt params.
193
194 - **"Non-static method CRM_Contact_Page_AJAX::pdfFormat() should not be called
195 statically" when changing the page format on print/merge document
196 ([dev/core#2110](https://lab.civicrm.org/dev/core/-/issues/2110):
197 [18726](https://github.com/civicrm/civicrm-core/pull/18726))**
198
199 Fixes notices when generating PDFs.
200
201 - **updated italian provinces
202 ([18859](https://github.com/civicrm/civicrm-core/pull/18859))**
203
204 Ensures that the right abbreviations are used for Italian provinces.
205
206 - **APIv4 Activity::update() causes target contacts and assignees to be deleted
207 ([dev/core#1428](https://lab.civicrm.org/dev/core/-/issues/1428):
208 [18720](https://github.com/civicrm/civicrm-core/pull/18720))**
209
210 Adds a test.
211
212 - **APIv4 - Fix type coersion of non-string input
213 ([18860](https://github.com/civicrm/civicrm-core/pull/18860))**
214
215 Fixes APIv4 to not accidentally change non-string input to string.
216
217 - **Participant Calculate/Fees: fix ts usage, simplify wording
218 ([18874](https://github.com/civicrm/civicrm-core/pull/18874))**
219
220 Fixes an incorrect use of ts, which assumes how strings can be concatenated.
221 It also makes it difficult to use Word Replacements.
222
223 - **Cancel first contribution associated to membership, cancels the membership
224 ([dev/core#927](https://lab.civicrm.org/dev/core/-/issues/927):
225 [18814](https://github.com/civicrm/civicrm-core/pull/18814),
226 [18812](https://github.com/civicrm/civicrm-core/pull/18812),
227 [18853](https://github.com/civicrm/civicrm-core/pull/18853),
228 [18786](https://github.com/civicrm/civicrm-core/pull/18786),
229 [18881](https://github.com/civicrm/civicrm-core/pull/18881),
230 [18813](https://github.com/civicrm/civicrm-core/pull/18813) and
231 [18784](https://github.com/civicrm/civicrm-core/pull/18784))**
232
233 - **When default changed for an alphanumeric multi-select custom field
234 defaulting breaks for that field on backend
235 forms.([dev/core#2139](https://lab.civicrm.org/dev/core/-/issues/2139):
236 [18907](https://github.com/civicrm/civicrm-core/pull/18907))**
237
238 - **Long cyrillic names give error Data too long for column sort_name when
239 saving a contact
240 ([dev/core#2146](https://lab.civicrm.org/dev/core/-/issues/2146):
241 [18862](https://github.com/civicrm/civicrm-core/pull/18862))**
242
243 - **Incorrect use of quotes and escape and ts in CRM_Core_DAO::copyValues
244 ([dev/core#2148](https://lab.civicrm.org/dev/core/-/issues/2148):
245 [18864](https://github.com/civicrm/civicrm-core/pull/18864))**
246
247 - **CiviCRM reCAPTCHA Util not validating user tokens on form submission
248 ([dev/core#2150](https://lab.civicrm.org/dev/core/-/issues/2150):
249 [18872](https://github.com/civicrm/civicrm-core/pull/18872) and
250 [311](https://github.com/civicrm/civicrm-packages/pull/311))**
251
252 - **Fix the Test Result (1 failure / -190)
253 E2E.Core.PrevNextTest.testDeleteByCacheKey recurring test issue
254 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
255 [18846](https://github.com/civicrm/civicrm-core/pull/18846))**
256
257 - **Merge - ensure location entities remaining on deleted contacts have
258 is_primary integrity
259 ([dev/core#2047](https://lab.civicrm.org/dev/core/-/issues/2047):
260 [18555](https://github.com/civicrm/civicrm-core/pull/18555))**
261
262 - **Eliminate unused query on CRM_Core_BAO_CustomQuery::_construct
263 ([dev/core#2079](https://lab.civicrm.org/dev/core/-/issues/2079):
264 [18668](https://github.com/civicrm/civicrm-core/pull/18668))**
265
266 - **get log date from tables available in query with data instead of last table
267 ([18868](https://github.com/civicrm/civicrm-core/pull/18868))**
268
269 - **Search ext: Fix validation and saving on search admin screen
270 ([18919](https://github.com/civicrm/civicrm-core/pull/18919))**
271
272 - **CRM_Core_Error::formatFooException - Don't bomb on 'Error'
273 ([18910](https://github.com/civicrm/civicrm-core/pull/18910))**
274
275 - **ClassLoader - Fix autoloading of `API_Exception`
276 ([18870](https://github.com/civicrm/civicrm-core/pull/18870))**
277
278 - **SavedSearch: add UI_name index to upgrade script
279 ([18811](https://github.com/civicrm/civicrm-core/pull/18811))**
280
281 - **Fix pluralize function for words like 'display'
282 ([18778](https://github.com/civicrm/civicrm-core/pull/18778))**
283
284 - **class.api.php: In remote api calls, allow referer and useragent to be set.
285 ([18400](https://github.com/civicrm/civicrm-core/pull/18400))**
286
287 - **Typo in call to fixSchemaDifferencesForAll
288 ([18762](https://github.com/civicrm/civicrm-core/pull/18762))**
289
290 - **Rationalise date formatting
291 ([18805](https://github.com/civicrm/civicrm-core/pull/18805))**
292
293 ### CiviCampaign
294
295 - **Fix campaign_id handling for batch entry
296 ([18792](https://github.com/civicrm/civicrm-core/pull/18792))**
297
298 Fixes a bug whereby `campaign_id` is not updated on batch entry if it has been
299 added to the profile.
300
301 ### CiviCase
302
303 - **Merging contacts removes case roles
304 ([dev/core#2152](https://lab.civicrm.org/dev/core/-/issues/2152):
305 [18884](https://github.com/civicrm/civicrm-core/pull/18884))**
306
307 ### CiviContribute
308
309 - **finish 'this round' of completeOrder cleanup
310 ([dev/financial#152](https://lab.civicrm.org/dev/financial/-/issues/152):
311 [18631](https://github.com/civicrm/civicrm-core/pull/18631),
312 [18734](https://github.com/civicrm/civicrm-core/pull/18734),
313 [18732](https://github.com/civicrm/civicrm-core/pull/18732),
314 [18733](https://github.com/civicrm/civicrm-core/pull/18733),
315 [18728](https://github.com/civicrm/civicrm-core/pull/18728),
316 [18629](https://github.com/civicrm/civicrm-core/pull/18629),
317 [18835](https://github.com/civicrm/civicrm-core/pull/18835),
318 [18730](https://github.com/civicrm/civicrm-core/pull/18730),
319 [18729](https://github.com/civicrm/civicrm-core/pull/18729).
320 [18737](https://github.com/civicrm/civicrm-core/pull/18737),
321 [18735](https://github.com/civicrm/civicrm-core/pull/18735),
322 [18744](https://github.com/civicrm/civicrm-core/pull/18744),
323 [18736](https://github.com/civicrm/civicrm-core/pull/18736) and
324 [18815](https://github.com/civicrm/civicrm-core/pull/18815))**
325
326 Cleans up how `completeOrder` deals with `payment_processor_id` (solely as an
327 input param).
328
329 - **Thank-you letter incorrect contribution currency
330 ([dev/financial#111](https://lab.civicrm.org/dev/financial/-/issues/111):
331 [18714](https://github.com/civicrm/civicrm-core/pull/18714) and
332 [18715](https://github.com/civicrm/civicrm-core/pull/18715))**
333
334 Ensures that when a contribution is made using a currency other than the
335 default currency, the contribution tokens: {contribution.total_amount}
336 {contribution.fee_amount} {contribution.net_amount} correctly display the
337 currency.
338
339 - **PayPal payment processor uses deprecated methods, breaking functionality
340 (Work Towards [dev/core#2034](https://lab.civicrm.org/dev/core/-/issues/2034):
341 [18540](https://github.com/civicrm/civicrm-core/pull/18540))**
342
343 Fixes the PayPal standard cancel url.
344
345 - **Declare support for cancelRecurring in manual processor
346 ([18804](https://github.com/civicrm/civicrm-core/pull/18804))**
347
348 Ensure that when no processor id is present the cancel form is loaded (as
349 opposed to the enable-disable form).
350
351 - **Refund status not set correctly when cancelled_payment_id is set
352 ([dev/financial#156](https://lab.civicrm.org/dev/financial/-/issues/156):
353 [18930](https://github.com/civicrm/civicrm-core/pull/18930))**
354
355 - **Contribution confirmation page should not display the name of payment
356 processor type ([17568](https://github.com/civicrm/civicrm-core/pull/17568))**
357
358 - **PCP 'Your Message' should use WYSIWYG
359 ([18411](https://github.com/civicrm/civicrm-core/pull/18411))**
360
361 ### CiviEvent
362
363 - **.ical files not populating correctly for sites with ACL's configured for
364 events ([dev/core#1879](https://lab.civicrm.org/dev/core/-/issues/1879):
365 [18712](https://github.com/civicrm/civicrm-core/pull/18712))**
366
367 ### CiviMail
368
369 - **Set id after save for the mailing component in the postProcess
370 ([18808](https://github.com/civicrm/civicrm-core/pull/18808))**
371
372 - **"Notice: Undefined index: domain" when deleting a mail account
373 ([dev/core#2166](https://lab.civicrm.org/dev/core/-/issues/2166):
374 [18927](https://github.com/civicrm/civicrm-core/pull/18927))**
375
376 - **crmMailing - Only load Angular settings if they're needed
377 ([18749](https://github.com/civicrm/civicrm-core/pull/18749))**
378
379 ### CiviSMS
380
381 - **Error in the selected phone to send an SMS when the Mobile type label is
382 modified ([dev/core#2138](https://lab.civicrm.org/dev/core/-/issues/2138):
383 [18842](https://github.com/civicrm/civicrm-core/pull/18842))**
384
385 - **Show only Active SMS provider List on Mass SMS form
386 ([18867](https://github.com/civicrm/civicrm-core/pull/18867))**
387
388 ### Backdrop Integration
389
390 - **Override sessionStart function and use backdrop functions as appropriate
391 (related to
392 [backdrop#116](https://github.com/civicrm/civicrm-backdrop/issues/116):
393 [18745](https://github.com/civicrm/civicrm-core/pull/18745))**
394
395 Overrides the backdrop Session start function in DrupalBase.php to use the
396 backdrop specific functions
397
398 - **Resolve #110 Sync repo with CiviCRM-Drupal repo
399 ([115](https://github.com/civicrm/civicrm-backdrop/pull/115))**
400
401 ### Drupal Integration
402
403 - **Do not manually construct the site path during Drupal8+ setup
404 ([dev/core#2140](https://lab.civicrm.org/dev/core/-/issues/2140):
405 [18843](https://github.com/civicrm/civicrm-core/pull/18843))**
406
407 - **D8 Install checks run via Drupal Status Report - gives misleading warnings.
408 ([dev/drupal#137](https://lab.civicrm.org/dev/drupal/-/issues/137):
409 [18581](https://github.com/civicrm/civicrm-core/pull/18581))**
410
411 ### Joomla Integration
412
413 - **[Joomla 4.0] CiviCRM cannot be installed on Joomla 4.0 alpha
414 ([dev/joomla#14](https://lab.civicrm.org/dev/joomla/-/issues/14):
415 [52](https://github.com/civicrm/civicrm-joomla/pull/52))**
416
417 ### Wordpress Integration
418
419 - **Protect against undefined index query in heartbeat callback
420 ([220](https://github.com/civicrm/civicrm-wordpress/pull/220))**
421
422 ## <a name="misc"></a>Miscellany
423
424 - **Schema handler fixes
425 ([18932](https://github.com/civicrm/civicrm-core/pull/18932))**
426
427 - **[cq] Do not pass by reference where avoidable
428 ([dev/core#2043](https://lab.civicrm.org/dev/core/-/issues/2043):
429 [18802](https://github.com/civicrm/civicrm-core/pull/18802))**
430
431 - **Move financialACLs to a core extension (Work Towards
432 [dev/core#2115](https://lab.civicrm.org/dev/core/-/issues/2115):
433 [18738](https://github.com/civicrm/civicrm-core/pull/18738) and
434 [18740](https://github.com/civicrm/civicrm-core/pull/18740))**
435
436 - **Move call to update related pledges on contribution cancel to extension
437 ([18894](https://github.com/civicrm/civicrm-core/pull/18894))**
438
439 - **Move filtering of unpermitted options for reports/ search select to
440 financialacl extension
441 ([18849](https://github.com/civicrm/civicrm-core/pull/18849))**
442
443 - **Move CRM_Member_BAO_MembershipType::getPermissionedMembershipTypes to
444 financial acl extension
445 ([18848](https://github.com/civicrm/civicrm-core/pull/18848))**
446
447 - **Replace BAO calls with api calls in test class
448 ([18798](https://github.com/civicrm/civicrm-core/pull/18798))**
449
450 - **Switch to calling api
451 ([18797](https://github.com/civicrm/civicrm-core/pull/18797))**
452
453 - **Switch to calling the api
454 ([18796](https://github.com/civicrm/civicrm-core/pull/18796))**
455
456 - **Extract setNextUrl
457 ([18750](https://github.com/civicrm/civicrm-core/pull/18750))**
458
459 - **Deprecate hook_civicrm_crudLink
460 ([18888](https://github.com/civicrm/civicrm-core/pull/18888))**
461
462 - **Fix extension generated DAO files to pass civilint
463 ([18879](https://github.com/civicrm/civicrm-core/pull/18879))**
464
465 - **Hack away at false negative test fails
466 ([18892](https://github.com/civicrm/civicrm-core/pull/18892))**
467
468 - **Remove always-true IF
469 ([18803](https://github.com/civicrm/civicrm-core/pull/18803))**
470
471 - **Remove always true if
472 ([18801](https://github.com/civicrm/civicrm-core/pull/18801))**
473
474 - **Remove always-true & otherwise silly if
475 ([18883](https://github.com/civicrm/civicrm-core/pull/18883))**
476
477 - **Remove IPN reference to _relatedObjects, deprecate property
478 ([18895](https://github.com/civicrm/civicrm-core/pull/18895))**
479
480 - **Remove deprecated code
481 ([18903](https://github.com/civicrm/civicrm-core/pull/18903))**
482
483 - **Remove a few lines of deprecated code
484 ([18826](https://github.com/civicrm/civicrm-core/pull/18826))**
485
486 - **Remove instances of variable variables
487 ([18791](https://github.com/civicrm/civicrm-core/pull/18791))**
488
489 - **Remove meaningless legacy code
490 ([18856](https://github.com/civicrm/civicrm-core/pull/18856))**
491
492 - **Refactor entityParams in Order.Create API so it is easier to
493 understand/modify
494 ([18306](https://github.com/civicrm/civicrm-core/pull/18306))**
495
496 - **[REF] Minor simplification - don't use a variable for table name
497 ([18651](https://github.com/civicrm/civicrm-core/pull/18651))**
498
499 - **[REF] Remove silly if
500 ([18897](https://github.com/civicrm/civicrm-core/pull/18897))**
501
502 - **[Ref] Move sending the email back out of the recur function
503 ([18852](https://github.com/civicrm/civicrm-core/pull/18852))**
504
505 - **[Ref] Use direct version of participant id
506 ([18882](https://github.com/civicrm/civicrm-core/pull/18882))**
507
508 - **[Ref] Simplify params
509 ([18896](https://github.com/civicrm/civicrm-core/pull/18896))**
510
511 - **[REF] Simplify use of shared code.
512 ([18900](https://github.com/civicrm/civicrm-core/pull/18900))**
513
514 - **[REF] Minor extraction
515 ([18829](https://github.com/civicrm/civicrm-core/pull/18829))**
516
517 - **[REF] Determine values where they are needed rather than passing them
518 around (in tested function)
519 ([18837](https://github.com/civicrm/civicrm-core/pull/18837))**
520
521 - **[REF] Include contributioncancelactions extension in dismaker and reg…
522 ([18825](https://github.com/civicrm/civicrm-core/pull/18825))**
523
524 - **[REF] Extract handling for loading contribution recur object.
525 ([18746](https://github.com/civicrm/civicrm-core/pull/18746))**
526
527 - **[REF] Replace long if block with early return
528 ([18747](https://github.com/civicrm/civicrm-core/pull/18747))**
529
530 - **[REF] Upgrade DomPDF to v0.8.6
531 ([18688](https://github.com/civicrm/civicrm-core/pull/18688))**
532
533 - **[REF] Separate export form classes out & simplify task handling
534 ([18589](https://github.com/civicrm/civicrm-core/pull/18589))**
535
536 - **[REF] Search ext: Reorganize code into modules
537 ([18775](https://github.com/civicrm/civicrm-core/pull/18775))**
538
539 - **[Ref] Minor code extraction
540 ([18739](https://github.com/civicrm/civicrm-core/pull/18739))**
541
542 - **[Test] - Fix some tests to call API not BAO
543 ([18795](https://github.com/civicrm/civicrm-core/pull/18795))**
544
545 - **[Test] Ensure all APIv4 entities have basic info
546 ([18727](https://github.com/civicrm/civicrm-core/pull/18727))**
547
548 - **Test for event#43
549 ([18761](https://github.com/civicrm/civicrm-core/pull/18761))**
550
551 - **Add test for recurring links and clean up method of retrieving recurring
552 ([18790](https://github.com/civicrm/civicrm-core/pull/18790))**
553
554 - **unit test for #18306 - order create api test for contribution
555 ([18785](https://github.com/civicrm/civicrm-core/pull/18785))**
556
557 - **(NFC) Fix typo in Money valueFormat depretation warning
558 ([18886](https://github.com/civicrm/civicrm-core/pull/18886))**
559
560 - **(NFC) Make assertions in PrevNextTest more skimmable
561 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
562 [18822](https://github.com/civicrm/civicrm-core/pull/18822))**
563
564 ## <a name="credits"></a>Credits
565
566 This release was developed by the following code authors:
567
568 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Francis Whittle, Justin
569 Freeman, Pengyi Zhang; Andrew Thompson; Christian Wach; Circle Interactive -
570 Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten;
571 CiviDesk - Sunil Pawar, Yashodha Chaku; CiviFirst - John Kirk; CompuCorp -
572 Debarshi Bhaumik; Coop SymbioTIC - Mathieu Lutfy; Dave D; Diego Muñio; Freeform
573 Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Luciano
574 Spiegel, Vangelis Pantazis; JMA Consulting - Monish Deb, Seamus Lee; John
575 Kingsnorth; Megaphone Technology Consulting - Jon Goldberg; mglaman; MJW
576 Consulting - Matthew Wire; Nicol Wistreich; PERORA SRL- Samuele Masetto;
577 Progressive Technology Project - Jamie McClelland; Richard van Oosterhout;
578 Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton
579
580 Most authors also reviewed code for this release; in addition, the following
581 reviewers contributed their comments:
582
583 Artful Robot - Rich Lott; Atomic Development - Max Tsero; Australian Greens -
584 John Twyman; Centarro - Matt Glaman; Fuzion - Luke Stewart; Greenpeace Central
585 and Eastern Europe - Patrick Figel; JMA Consulting - Joe Murray; jvos;
586 Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology
587 Consulting - Jon Goldberg; MJCO - Mikey O'Toole; Semper IT - Karin Gerritsen;
588 Tadpole Collective - Kevin Cristiano;
589
590 ## <a name="feedback"></a>Feedback
591
592 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
593 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
594 and contact `@agh1`.