Merge pull request #20469 from civicrm/5.38
[civicrm-core.git] / release-notes / 5.38.0.md
1 # CiviCRM 5.38.0
2
3 Released June 2, 2021
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 - **Civi::log()->debug() should only log if debugging is enabled
29 ([community/feature-request#12](https://lab.civicrm.org/community/feature-request/-/issues/12):
30 [20079](https://github.com/civicrm/civicrm-core/pull/20079))**
31
32 Makes it easier to route log messages based on their topic (e.g.
33 CiviContribute-related logs vs CiviMail-related logs).
34
35 - **We should not be auto-generating 5.xx.beta1.mysql.tpl files
36 ([dev/release#16](https://lab.civicrm.org/dev/release/-/issues/16):
37 [19744](https://github.com/civicrm/civicrm-core/pull/19744))**
38
39 Streamlines the upgrader by removing a number of empty upgrade steps.
40
41 - **SearchBuilder: contact search for tags with child-tags broken when using '='
42 operator ([dev/core#2502](https://lab.civicrm.org/dev/core/-/issues/2502):
43 [20016](https://github.com/civicrm/civicrm-core/pull/20016))**
44
45 Adds unit test for SearchBuilder fix.
46
47 - **Import the base upgrader
48 ([dev/core#2547](https://lab.civicrm.org/dev/core/-/issues/2547):
49 [20090](https://github.com/civicrm/civicrm-core/pull/20090))**
50
51 Moves the extension upgrader, base upgrader class to core.
52
53 - **Add contact source column in some Reports
54 ([20112](https://github.com/civicrm/civicrm-core/pull/20112))**
55
56 Improves reports by adding a contact source column option.
57
58 - **SearchKit - Make contribution tasks available as actions
59 ([20004](https://github.com/civicrm/civicrm-core/pull/20004))**
60
61 Improves the SearchKit UI by making contribution tasks available as actions.
62
63 - **Move reCAPTCHA to core extension (Work Towards
64 [dev/core#2571](https://lab.civicrm.org/dev/core/-/issues/2571):
65 [20166](https://github.com/civicrm/civicrm-core/pull/20166),
66 [20193](https://github.com/civicrm/civicrm-core/pull/20193) and
67 [20199](https://github.com/civicrm/civicrm-core/pull/20199))**
68
69 Code cleanup in preparation of moving reCAPTCHA to its own extension.
70
71 - **Api4 Services - Lazy-load subscriber-objects
72 ([20221](https://github.com/civicrm/civicrm-core/pull/20221))**
73
74 Improves loading of APIv4 subscriber objects.
75
76 - **Authx - Retain authentication outcome/metadata
77 ([20026](https://github.com/civicrm/civicrm-core/pull/20026))**
78
79 Improves the internal APIs for Authx. Authx supports additional ways to
80 authenticate requests (e.g. passwords, API keys, JWTs). With this patchset, we
81 have an internal way to see how the user was authenticated, e.g.
82
83 - **Increase civicrm_queue_item.data field size
84 ([20107](https://github.com/civicrm/civicrm-core/pull/20107))**
85
86 Changes the data type for the `data` column on the `civicrm_queue_item` table
87 from TEXT to LONGTEXT.
88
89 - **Include more data in error message
90 ([20110](https://github.com/civicrm/civicrm-core/pull/20110))**
91
92 More explicit error messaging.
93
94 - **Add 'contact-actions-ribbon' region
95 ([20108](https://github.com/civicrm/civicrm-core/pull/20108))**
96
97 Adds a region to the top of the contact summary screen where action buttons
98 go.
99
100 ### CiviContribute
101
102 - **Add pager to bottom of Manage Contribution Pages
103 ([20061](https://github.com/civicrm/civicrm-core/pull/20061))**
104
105 Improves the UI by adding a pager to the Manage Contribution Pages form.
106
107 - **Add installments to propertyBag
108 ([20023](https://github.com/civicrm/civicrm-core/pull/20023))**
109
110 Adds installments property to propertyBag.
111
112 - **Define return parameters for doPayment (Work Towards
113 [dev/financial#141](https://lab.civicrm.org/dev/financial/-/issues/141):
114 [20021](https://github.com/civicrm/civicrm-core/pull/20021))**
115
116 Ensures the core doPayment function returns payment_status.
117
118 - **Add support for receipt task outside the search process
119 ([19848](https://github.com/civicrm/civicrm-core/pull/19848))**
120
121 Adds support for url-based receipt sending.
122
123 ### CiviMail
124
125 - **Make it possible to make a copy of a draft mailing
126 ([dev/mail#90](https://lab.civicrm.org/dev/mail/-/issues/90):
127 [20058](https://github.com/civicrm/civicrm-core/pull/20058))**
128
129 Allow re-use mailing of draft mailings and adhoc mailings.
130
131 ### Drupal Integration
132
133 - **In Drupal8, CMS intergration don't show table mapping
134 ([dev/core#2490](https://lab.civicrm.org/dev/core/-/issues/2490):
135 [19989](https://github.com/civicrm/civicrm-core/pull/19989))**
136
137 Hides table mapping for Drupal8 integrations because it is not necessary.
138
139 - **Consider joining the GitHub Sponsors program (Work Towards
140 [community/sustainability#20](https://lab.civicrm.org/community/sustainability/-/issues/20):
141 [644](https://github.com/civicrm/civicrm-drupal/pull/644) and
142 [63](https://github.com/civicrm/civicrm-drupal-8/pull/63))**
143
144 Add FUNDING.yml to display a SPONSOR link that directs to c.o.
145
146 ## <a name="bugs"></a>Bugs resolved
147
148 ### Core CiviCRM
149
150 - **Activity Type and Case Type not being combined correctly in Advanced Search
151 ([dev/report#53](https://lab.civicrm.org/dev/report/-/issues/53):
152 [20002](https://github.com/civicrm/civicrm-core/pull/20002))**
153
154 Ensures when running an advanced search that displays related contacts with case
155 parameters set, only contacts related to the relevant cases are displayed.
156
157 - **Petition confirmation email places space at end of confirmation URL
158 ([dev/core#403](https://lab.civicrm.org/dev/core/-/issues/403):
159 [20080](https://github.com/civicrm/civicrm-core/pull/20080))**
160
161 Remove trailing white space in url.
162
163 - **Fix invalidate cache for smart groups
164 ([dev/core#2516](https://lab.civicrm.org/dev/core/-/issues/2516):
165 [19986](https://github.com/civicrm/civicrm-core/pull/19986))**
166
167 Method CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache() is
168 described as touching smart groups but there is no condition for smart groups.
169
170 - **APIv4 - Fix unserialize settings
171 ([20048](https://github.com/civicrm/civicrm-core/pull/20048))**
172
173 Fixes a bug in the APIv4 "Setting" entity where serialized values were not
174 getting returned properly.
175
176 - **Globally reset angular hashPrefix
177 ([20152](https://github.com/civicrm/civicrm-core/pull/20152))**
178
179 Globally reset the AngularJS hash prefix for consistency across all modules
180 and pages in CiviCRM.
181
182 - **PayPal fails to create contribution following duplicate merge when
183 membership record has been deleted
184 ([dev/core#2593](https://lab.civicrm.org/dev/core/-/issues/2593):
185 [20244](https://github.com/civicrm/civicrm-core/pull/20244))**
186
187 Stop passing membership id into recur notify.
188
189 - **Afform - Set default position for contact layout editor
190 ([20228](https://github.com/civicrm/civicrm-core/pull/20228))**
191
192 Makes Afform blocks appear in their default positions in the "System Default"
193 layout in Contact Summary Editor 2.0+.
194
195 - **Search Kit links improvements
196 ([20134](https://github.com/civicrm/civicrm-core/pull/20134))**
197
198 Fixes some problems with creating links in Search Kit and improves the UX
199 around editing links.
200
201 - **Uninstall for `org.civicrm.search` extension fails
202 ([dev/core#2556](https://lab.civicrm.org/dev/core/-/issues/2556):
203 [20124](https://github.com/civicrm/civicrm-core/pull/20124))**
204
205 Renames the extension org.civicrm.search to org.civicrm.search_kit.
206
207 - **Redundant indexes (Work Towards
208 [dev/core#2575](https://lab.civicrm.org/dev/core/-/issues/2575):
209 [20245](https://github.com/civicrm/civicrm-core/pull/20245))**
210
211 Removes a couple of indexes on the id field as they are duplicates.
212
213 - **system workflow template uses backend URL
214 ([dev/core#2582](https://lab.civicrm.org/dev/core/-/issues/2582):
215 [20203](https://github.com/civicrm/civicrm-core/pull/20203))**
216
217 - **Unable to send transactional email to more than 2 recipients if there is an
218 attachment ([dev/core#2588](https://lab.civicrm.org/dev/core/-/issues/2588):
219 [20222](https://github.com/civicrm/civicrm-core/pull/20222) and
220 [20227](https://github.com/civicrm/civicrm-core/pull/20227))**
221
222 - **Afform - Fix saving joined entities (email, address, phone, etc)
223 ([20264](https://github.com/civicrm/civicrm-core/pull/20264))**
224
225 - **Afform - Fix loading entities from url args
226 ([20145](https://github.com/civicrm/civicrm-core/pull/20145))**
227
228 - **Afform - Improve integration with ContactLayout editor
229 ([20042](https://github.com/civicrm/civicrm-core/pull/20042))**
230
231 - **Afform - include Generic.html by default
232 ([dev/core#2533](https://lab.civicrm.org/dev/core/-/issues/2533):
233 [20141](https://github.com/civicrm/civicrm-core/pull/20141))**
234
235 - **SearchKit - Fix updating Entity Ref fields
236 ([20125](https://github.com/civicrm/civicrm-core/pull/20125))**
237
238 - **SearchKit - Exclude serialized fields from implicit join selection
239 ([20156](https://github.com/civicrm/civicrm-core/pull/20156))**
240
241 - **SearchKit - Fix display of contact reference fields (single-value)
242 ([20117](https://github.com/civicrm/civicrm-core/pull/20117))**
243
244 - **APIv4 - Setting api misc fixes & tests
245 ([20191](https://github.com/civicrm/civicrm-core/pull/20191))**
246
247 - **Save entities created by api v4 to managed
248 ([20105](https://github.com/civicrm/civicrm-core/pull/20105))**
249
250 - **APIv4 - Fix Setting api to work with index param
251 ([20072](https://github.com/civicrm/civicrm-core/pull/20072))**
252
253 - **Fix enotice when Log service is swapped out
254 ([20146](https://github.com/civicrm/civicrm-core/pull/20146))**
255
256 - **Fix PayPal IPN URL and WordPress URLs when Permalinks are set to "Plain"
257 ([20063](https://github.com/civicrm/civicrm-core/pull/20063))**
258
259 - **fix capitalization to allow proper access to 'access AJAX API' perm.
260 ([20200](https://github.com/civicrm/civicrm-core/pull/20200))**
261
262 - **Fix a copy-and-paste error in the field definitions for OAuthSysToken
263 ([20157](https://github.com/civicrm/civicrm-core/pull/20157))**
264
265 - **Fixes issue with state/province & country not translating values
266 ([20169](https://github.com/civicrm/civicrm-core/pull/20169))**
267
268 - **Enotice fix ([20122](https://github.com/civicrm/civicrm-core/pull/20122))**
269
270 - **Extensions - Setup `<classloader>` during installation
271 ([20091](https://github.com/civicrm/civicrm-core/pull/20091))**
272
273 - **Extensions - Setup <classloader> during "enable" and "uninstall"
274 ([20116](https://github.com/civicrm/civicrm-core/pull/20116))**
275
276 - **Fix for importing preferred language (and other fields) by label
277 ([19886](https://github.com/civicrm/civicrm-core/pull/19886))**
278
279 - **Fix AuthX Setting Labels
280 ([20055](https://github.com/civicrm/civicrm-core/pull/20055))**
281
282 - **Removed limit of 25 groups and past mailings
283 ([20069](https://github.com/civicrm/civicrm-core/pull/20069))**
284
285 - **When generating boilerplate code from xml, make error text more helpful and
286 spelt correctly
287 ([20054](https://github.com/civicrm/civicrm-core/pull/20054))**
288
289 - **File CustomField: avoid renaming an empty file
290 ([19890](https://github.com/civicrm/civicrm-core/pull/19890))**
291
292 - **Calling UFGroup.create to update a profile without specifying is_active=1
293 disables the profile
294 ([dev/core#2501](https://lab.civicrm.org/dev/core/-/issues/2501):
295 [19995](https://github.com/civicrm/civicrm-core/pull/19995))**
296
297 - **CiviReport does not localize custom fields of type Number
298 ([dev/core#2505](https://lab.civicrm.org/dev/core/-/issues/2505):
299 [20123](https://github.com/civicrm/civicrm-core/pull/20123) and
300 [20053](https://github.com/civicrm/civicrm-core/pull/20053))**
301
302 - **Autocomplete-select custom field (Multi-Select=true) values with checked are
303 reset in case of form rule errors
304 ([dev/core#2506](https://lab.civicrm.org/dev/core/-/issues/2506):
305 [20137](https://github.com/civicrm/civicrm-core/pull/20137))**
306
307 - **Search kit: Links to case (and other) activities go to the wrong form
308 ([dev/core#2509](https://lab.civicrm.org/dev/core/-/issues/2509):
309 [20118](https://github.com/civicrm/civicrm-core/pull/20118),
310 [20114](https://github.com/civicrm/civicrm-core/pull/20114)
311 [20060](https://github.com/civicrm/civicrm-core/pull/20060) and
312 [20106](https://github.com/civicrm/civicrm-core/pull/20106))**
313
314 - **Empty extension requires tag misevaluated
315 ([dev/core#2536](https://lab.civicrm.org/dev/core/-/issues/2536):
316 [20064](https://github.com/civicrm/civicrm-core/pull/20064))**
317
318 - **Clarify scheduled reminder options: Event Start Date -> Event Start, etc
319 ([dev/core#2541](https://lab.civicrm.org/dev/core/-/issues/2541):
320 [20070](https://github.com/civicrm/civicrm-core/pull/20070))**
321
322 - **Errors on merging contacts with websites
323 ([dev/core#2549](https://lab.civicrm.org/dev/core/-/issues/2549):
324 [20101](https://github.com/civicrm/civicrm-core/pull/20101))**
325
326 ### CiviCampaign
327
328 - **Set html type of campaign fields
329 ([20215](https://github.com/civicrm/civicrm-core/pull/20215))**
330
331 Cleanup metadata for the campaign_id field.
332
333 - **APIv4 - Don't show campaign_id in getFields if campaign component disabled
334 ([20219](https://github.com/civicrm/civicrm-core/pull/20219))**
335
336 ### CiviContribute
337
338 - **Undefined index: contribution in
339 CRM_Contribute_BAO_Contribution::getContributionTokenValues()
340 ([dev/core#2568](https://lab.civicrm.org/dev/core/-/issues/2568):
341 [20188](https://github.com/civicrm/civicrm-core/pull/20188))**
342
343 Fixes an undefined index error after sending thank-you emails/letters for
344 contributions.
345
346 - **CiviCRM 5.35.1, truncation of money values where $1,000 donation is recorded
347 as $1 which appears to be truncating at the thousand separator when using the
348 Australian (AU) and US Locale
349 ([dev/core#2493](https://lab.civicrm.org/dev/core/-/issues/2493):
350 [19991](https://github.com/civicrm/civicrm-core/pull/19991))**
351
352 Default to not cleaning money for order.create api.
353
354 - **Recurring contributions label on contribution pages is unstylable text,
355 leading to problems with themes
356 ([dev/core#1452](https://lab.civicrm.org/dev/core/-/issues/1452):
357 [20092](https://github.com/civicrm/civicrm-core/pull/20092))**
358
359 - **Fix money formatting opps
360 ([20277](https://github.com/civicrm/civicrm-core/pull/20277))**
361
362 - **Make reCAPTCHA not conditional on paymentprocessor on contribution page
363 ([20180](https://github.com/civicrm/civicrm-core/pull/20180))**
364
365 - **Contribution.sendconfirmation API3 function should return
366 ([20182](https://github.com/civicrm/civicrm-core/pull/20182))**
367
368 - **Suppress legacy warnings by default in propertyBag to allow transition to
369 propertyBag without hitting legacy warnings on unconverted payment processors
370 ([20038](https://github.com/civicrm/civicrm-core/pull/20038))**
371
372 - **Make it clear that doDirectPayment/doTransferCheckout are deprecated and
373 should not be used
374 ([20020](https://github.com/civicrm/civicrm-core/pull/20020))**
375
376 - **Fix Payment.create to update (recalculate) contribution fee_amount
377 ([20008](https://github.com/civicrm/civicrm-core/pull/20008))**
378
379 ### CiviEvent
380
381 - **Cannot "Transfer or Cancel" event participant as admin user
382 ([dev/event#54](https://lab.civicrm.org/dev/event/-/issues/54):
383 [20150](https://github.com/civicrm/civicrm-core/pull/20150))**
384
385 ### CiviMember
386
387 - **Set the smarty variables for mem_status and mem_join_date for back-end
388 membership renewals
389 ([20224](https://github.com/civicrm/civicrm-core/pull/20224))**
390
391 - **Membership form Remove check for installments as not on the form (copied
392 from shared code)
393 ([19964](https://github.com/civicrm/civicrm-core/pull/19964))**
394
395 ### Drupal integration
396
397 - **Make APIv4 Subscribers Public to fix D9 install
398 ([20254](https://github.com/civicrm/civicrm-core/pull/20254))**
399
400 Fixes a "The "Civi_Api4_Event_Subscriber_PermissionCheckSubscriber" service or
401 alias has been removed..." failure on the D9 demo install.
402
403 - **Fix Drupal8 CiviCRM menu translation on multilingual (and ajax calls)
404 ([20085](https://github.com/civicrm/civicrm-core/pull/20085))**
405
406 ### Joomla integration
407
408 - **Cannot edit CiviCRM Joomla permissions (access control) in 5.37.0
409 ([dev/core#2601](https://lab.civicrm.org/dev/core/-/issues/2601):
410 [20256](https://github.com/civicrm/civicrm-core/pull/20256))**
411
412 ### Wordpress Integration
413
414 - **WordPress - redirect after login from event registration or contribution
415 page ([dev/core#2436](https://lab.civicrm.org/dev/core/-/issues/2436):
416 [19718](https://github.com/civicrm/civicrm-core/pull/19718))**
417
418 - **Update WP permission page for new string array keys
419 ([20045](https://github.com/civicrm/civicrm-core/pull/20045))**
420
421 ## <a name="misc"></a>Miscellany
422
423 - **Add amount as standard property to PaymentPropertyBag
424 ([20037](https://github.com/civicrm/civicrm-core/pull/20037))**
425
426 - **Use propertyBag in doPayment
427 ([20022](https://github.com/civicrm/civicrm-core/pull/20022))**
428
429 - **Move tpl assignment to email function
430 ([20013](https://github.com/civicrm/civicrm-core/pull/20013))**
431
432 - **Initial refactor of PayPal core processor to stop using
433 doDirectPayment/doTransferCheckout
434 ([20030](https://github.com/civicrm/civicrm-core/pull/20030))**
435
436 - **Convert Dummy payment processor to use doPayment function
437 ([20029](https://github.com/civicrm/civicrm-core/pull/20029))**
438
439 - **Switch to Call contribution api
440 ([20041](https://github.com/civicrm/civicrm-core/pull/20041))**
441
442 - **Alter dedupe code to call api rather than bao->save()
443 ([20036](https://github.com/civicrm/civicrm-core/pull/20036))**
444
445 - **Fix the MOST out-of-date parts of the afform readme
446 ([20100](https://github.com/civicrm/civicrm-core/pull/20100))**
447
448 - **oauth-client - Add test for existing Auth Code flow behavior
449 ([20162](https://github.com/civicrm/civicrm-core/pull/20162))**
450
451 - **add me ([20183](https://github.com/civicrm/civicrm-core/pull/20183))**
452
453 - **Make send letter function available to searchkit, individual contributions
454 ([20187](https://github.com/civicrm/civicrm-core/pull/20187))**
455
456 - **Extract sales tax test config to a trait
457 ([20233](https://github.com/civicrm/civicrm-core/pull/20233))**
458
459 - **APIv4 - Remove unnecessary custom getActions class
460 ([20181](https://github.com/civicrm/civicrm-core/pull/20181))**
461
462 - **APIv4 - Remove unnecessary class override (handled by generic)
463 ([20173](https://github.com/civicrm/civicrm-core/pull/20173))**
464
465 - **APIv4 - Improve entity name lookup
466 ([20056](https://github.com/civicrm/civicrm-core/pull/20056))**
467
468 - **APIv4 - Deprecate nonstandard syntax for implicit joins
469 ([20130](https://github.com/civicrm/civicrm-core/pull/20130))**
470
471 - **Extract out getReceiveDate
472 ([20007](https://github.com/civicrm/civicrm-core/pull/20007))**
473
474 - **Simplify mailing check
475 ([20076](https://github.com/civicrm/civicrm-core/pull/20076))**
476
477 - **Remove unused functions
478 ([20099](https://github.com/civicrm/civicrm-core/pull/20099))**
479
480 - **Replace string org.civicrm.search -> org.civicrm.search_kit
481 ([20132](https://github.com/civicrm/civicrm-core/pull/20132))**
482
483 - **Move more functions to the pdfLetter class
484 ([20143](https://github.com/civicrm/civicrm-core/pull/20143))**
485
486 - **Remove apparent copy & paste from Contribution pdf letter function
487 ([20161](https://github.com/civicrm/civicrm-core/pull/20161))**
488
489 - **Remove reference to trxn_id, not on form, from previously shared code
490 ([19965](https://github.com/civicrm/civicrm-core/pull/19965))**
491
492 - **Add deprected warning to apparently unused functions
493 ([20192](https://github.com/civicrm/civicrm-core/pull/20192))**
494
495 - **[REF] Add strict types to Utils_Mail::Send
496 ([20171](https://github.com/civicrm/civicrm-core/pull/20171))**
497
498 - **REF Cleanup ReCAPTCHA code
499 ([20167](https://github.com/civicrm/civicrm-core/pull/20167))**
500
501 - **[REF] Post move cleanup - switch from $form to $this
502 ([20160](https://github.com/civicrm/civicrm-core/pull/20160))**
503
504 - **REF reCAPTCHA Simplify buildCustom function on Registration form
505 ([20164](https://github.com/civicrm/civicrm-core/pull/20164))**
506
507 - **REF reCAPTCHA Simplify buildCustom function on Signature form
508 ([20165](https://github.com/civicrm/civicrm-core/pull/20165))**
509
510 - **[REF] Minor tidy up - use writeRecord
511 ([20159](https://github.com/civicrm/civicrm-core/pull/20159))**
512
513 - **[REF] Move more functions back to pdfLetter class
514 ([20155](https://github.com/civicrm/civicrm-core/pull/20155))**
515
516 - **[REF] Fix Security status check urls to work on WordPress
517 ([20111](https://github.com/civicrm/civicrm-core/pull/20111))**
518
519 - **[REF] Move functions back to class that uses it
520 ([20136](https://github.com/civicrm/civicrm-core/pull/20136))**
521
522 - **[Ref] Simplify getMembershipParameters
523 ([20014](https://github.com/civicrm/civicrm-core/pull/20014))**
524
525 - **(REF) Payflow Pro - Migrate code into a core extension
526 ([20043](https://github.com/civicrm/civicrm-core/pull/20043))**
527
528 - **[REF] Minor code cleanup
529 ([20175](https://github.com/civicrm/civicrm-core/pull/20175))**
530
531 - **[REF] Complete decommissioning of
532 CRM/Contribute/Form/Task/PDFLetterCommon.php
533 ([20172](https://github.com/civicrm/civicrm-core/pull/20172))**
534
535 - **[REF] Cleanup interaction with membership & membership id
536 ([20153](https://github.com/civicrm/civicrm-core/pull/20153))**
537
538 - **[REF] Fix error where entryURL does not contain id of the contributio…
539 ([19917](https://github.com/civicrm/civicrm-core/pull/19917))**
540
541 - **[REF] Simplify interaction with contributionRecur
542 ([20017](https://github.com/civicrm/civicrm-core/pull/20017))**
543
544 - **[REF] Minor tidy up
545 ([20194](https://github.com/civicrm/civicrm-core/pull/20194))**
546
547 - **[REF] Remove redundant code
548 ([20138](https://github.com/civicrm/civicrm-core/pull/20138))**
549
550 - **[REF] [ipn] Simplification around contributionRecur ID
551 ([19903](https://github.com/civicrm/civicrm-core/pull/19903))**
552
553 - **REF Update Pear/log to fix issues with install CiviCRM on Drupal 9.2
554 ([20218](https://github.com/civicrm/civicrm-core/pull/20218))**
555
556 - **[REF] [Towards membership api] extract getContributionSource
557 ([19966](https://github.com/civicrm/civicrm-core/pull/19966))**
558
559 - **[REF] [Towards membership api] Simplify determination on contribution recur
560 contact id ([19902](https://github.com/civicrm/civicrm-core/pull/19902))**
561
562 - **[Ref] One more place to use total fn
563 ([20010](https://github.com/civicrm/civicrm-core/pull/20010))**
564
565 - **[NFC] Consistency fix when defining CIVICRM_TEST
566 ([64](https://github.com/civicrm/civicrm-drupal-8/pull/64))**
567
568 - **[NFC] [Test] Minor preliminary cleanup
569 ([20006](https://github.com/civicrm/civicrm-core/pull/20006))**
570
571 - **[NFC] [Test] Preliminary cleanup
572 ([20012](https://github.com/civicrm/civicrm-core/pull/20012))**
573
574 - **[NFC] Code cleanup, docblocks, strict comparison, type hints
575 ([20240](https://github.com/civicrm/civicrm-core/pull/20240))**
576
577 - **[NFC] code cleanups in test class
578 ([20237](https://github.com/civicrm/civicrm-core/pull/20237))**
579
580 - **[NFC] Regenerate Grant DAO
581 ([20104](https://github.com/civicrm/civicrm-core/pull/20104))**
582
583 - **[NFC/Unit Test] - Help avoid problems when using assertApproxEquals with
584 integers instead of fractions
585 ([20089](https://github.com/civicrm/civicrm-core/pull/20089))**
586
587 - **(NFC) Fix possible flacky tests by splitting the parts of the checksum
588 ([20088](https://github.com/civicrm/civicrm-core/pull/20088))**
589
590 - **Add unit test for core#19628
591 ([19972](https://github.com/civicrm/civicrm-core/pull/19972))**
592
593 ## <a name="credits"></a>Credits
594
595 This release was developed by the following code authors:
596
597 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Francis Whittle, Justin
598 Freeman; Benjamin W; Caltha - Tomasz Pietrzkowski; Christian Wach; CiviCoop -
599 Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Ahed Eid, Omar Abu
600 Hussein; Coop SymbioTIC - Mathieu Lutfy; Dave D; Francesc Bassas i Bullich;
601 Fuzion - Jitendra Purohit; iXiam - Vangelis Pantazis; JMA Consulting - Monish
602 Deb, Seamus Lee; John Kingsnorth; Kartik Kathuria; Wildsight - Lars SG;
603 Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJCO -
604 Mikey O'Toole; MJW Consulting - Matthew Wire; Olivier Hertrich; Progressive
605 Technology Project - Jamie McClelland; Squiffle Consulting - Aidan Saunders;
606 Wikimedia Foundation - Eileen McNaughton
607
608 Most authors also reviewed code for this release; in addition, the following
609 reviewers contributed their comments:
610
611 Artful Robot - Rich Lott; Australian Greens - John Twyman; Caltha - Tomasz
612 Pietrzkowski; Christian Wach; CiviCoop - Jaap Jansma; CiviDesk - Yashodha Chaku;
613 JMA Consulting - Edsel Lopez, Joe Murray; Richard van Oosterhout; Semper IT -
614 Karin Gerritsen; SYSTOPIA Organisationsberatung - Björn Endres; Tadpole
615 Collective - Kevin Cristiano; Web Access - Kurund Jalmi;
616
617 ## <a name="feedback"></a>Feedback
618
619 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
620 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
621 and contact `@agh1`.