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