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 - **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))**
32 Makes it easier to route log messages based on their topic (e.g.
33 CiviContribute-related logs vs CiviMail-related logs).
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))**
39 Streamlines the upgrader by removing a number of empty upgrade steps.
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))**
45 Adds unit test for SearchBuilder fix.
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))**
51 Moves the extension upgrader, base upgrader class to core.
53 - **Add contact source column in some Reports
54 ([20112](https://github.com/civicrm/civicrm-core/pull/20112))**
56 Improves reports by adding a contact source column option.
58 - **SearchKit - Make contribution tasks available as actions
59 ([20004](https://github.com/civicrm/civicrm-core/pull/20004))**
61 Improves the SearchKit UI by making contribution tasks available as actions.
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))**
69 Code cleanup in preparation of moving reCAPTCHA to its own extension.
71 - **Api4 Services - Lazy-load subscriber-objects
72 ([20221](https://github.com/civicrm/civicrm-core/pull/20221))**
74 Improves loading of APIv4 subscriber objects.
76 - **Authx - Retain authentication outcome/metadata
77 ([20026](https://github.com/civicrm/civicrm-core/pull/20026))**
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.
83 - **Increase civicrm_queue_item.data field size
84 ([20107](https://github.com/civicrm/civicrm-core/pull/20107))**
86 Changes the data type for the `data` column on the `civicrm_queue_item` table
87 from TEXT to LONGTEXT.
89 - **Include more data in error message
90 ([20110](https://github.com/civicrm/civicrm-core/pull/20110))**
92 More explicit error messaging.
94 - **Add 'contact-actions-ribbon' region
95 ([20108](https://github.com/civicrm/civicrm-core/pull/20108))**
97 Adds a region to the top of the contact summary screen where action buttons
102 - **Add pager to bottom of Manage Contribution Pages
103 ([20061](https://github.com/civicrm/civicrm-core/pull/20061))**
105 Improves the UI by adding a pager to the Manage Contribution Pages form.
107 - **Add installments to propertyBag
108 ([20023](https://github.com/civicrm/civicrm-core/pull/20023))**
110 Adds installments property to propertyBag.
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))**
116 Ensures the core doPayment function returns payment_status.
118 - **Add support for receipt task outside the search process
119 ([19848](https://github.com/civicrm/civicrm-core/pull/19848))**
121 Adds support for url-based receipt sending.
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))**
129 Allow re-use mailing of draft mailings and adhoc mailings.
131 ### Drupal Integration
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))**
137 Hides table mapping for Drupal8 integrations because it is not necessary.
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))**
144 Add FUNDING.yml to display a SPONSOR link that directs to c.o.
146 ## <a name="bugs"></a>Bugs resolved
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))**
156 This restores the ability for administrators to set passwords for new users on
157 the Create User Record form.
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))**
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.
166 - **Upgrade CKEditor to be 4.16.1
167 ([20428](https://github.com/civicrm/civicrm-core/pull/20428))**
169 Change log is here https://github.com/ckeditor/ckeditor4/blob/major/CHANGES.md
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))**
175 Method CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache() is
176 described as touching smart groups but there is no condition for smart groups.
178 - **APIv4 - Fix unserialize settings
179 ([20048](https://github.com/civicrm/civicrm-core/pull/20048))**
181 Fixes a bug in the APIv4 "Setting" entity where serialized values were not
182 getting returned properly.
184 - **Globally reset angular hashPrefix
185 ([20152](https://github.com/civicrm/civicrm-core/pull/20152))**
187 Globally reset the AngularJS hash prefix for consistency across all modules
188 and pages in CiviCRM.
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))**
195 Stop passing membership id into recur notify.
197 - **Afform - Set default position for contact layout editor
198 ([20228](https://github.com/civicrm/civicrm-core/pull/20228))**
200 Makes Afform blocks appear in their default positions in the "System Default"
201 layout in Contact Summary Editor 2.0+.
203 - **Search Kit links improvements
204 ([20134](https://github.com/civicrm/civicrm-core/pull/20134))**
206 Fixes some problems with creating links in Search Kit and improves the UX
207 around editing links.
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))**
213 Renames the extension org.civicrm.search to org.civicrm.search_kit.
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))**
219 Removes a couple of indexes on the id field as they are duplicates.
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))**
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))**
230 - **Afform - Fix saving joined entities (email, address, phone, etc)
231 ([20264](https://github.com/civicrm/civicrm-core/pull/20264))**
233 - **Afform - Fix loading entities from url args
234 ([20145](https://github.com/civicrm/civicrm-core/pull/20145))**
236 - **Afform - Improve integration with ContactLayout editor
237 ([20042](https://github.com/civicrm/civicrm-core/pull/20042))**
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))**
243 - **SearchKit - Fix updating Entity Ref fields
244 ([20125](https://github.com/civicrm/civicrm-core/pull/20125))**
246 - **SearchKit - Exclude serialized fields from implicit join selection
247 ([20156](https://github.com/civicrm/civicrm-core/pull/20156))**
249 - **SearchKit - Fix display of contact reference fields (single-value)
250 ([20117](https://github.com/civicrm/civicrm-core/pull/20117))**
252 - **APIv4 - Setting api misc fixes & tests
253 ([20191](https://github.com/civicrm/civicrm-core/pull/20191))**
255 - **Save entities created by api v4 to managed
256 ([20105](https://github.com/civicrm/civicrm-core/pull/20105))**
258 - **APIv4 - Fix Setting api to work with index param
259 ([20072](https://github.com/civicrm/civicrm-core/pull/20072))**
261 - **Fix enotice when Log service is swapped out
262 ([20146](https://github.com/civicrm/civicrm-core/pull/20146))**
264 - **Fix PayPal IPN URL and WordPress URLs when Permalinks are set to "Plain"
265 ([20063](https://github.com/civicrm/civicrm-core/pull/20063))**
267 - **fix capitalization to allow proper access to 'access AJAX API' perm.
268 ([20200](https://github.com/civicrm/civicrm-core/pull/20200))**
270 - **Fix a copy-and-paste error in the field definitions for OAuthSysToken
271 ([20157](https://github.com/civicrm/civicrm-core/pull/20157))**
273 - **Fixes issue with state/province & country not translating values
274 ([20169](https://github.com/civicrm/civicrm-core/pull/20169))**
276 - **Enotice fix ([20122](https://github.com/civicrm/civicrm-core/pull/20122))**
278 - **Extensions - Setup `<classloader>` during installation
279 ([20091](https://github.com/civicrm/civicrm-core/pull/20091))**
281 - **Extensions - Setup <classloader> during "enable" and "uninstall"
282 ([20116](https://github.com/civicrm/civicrm-core/pull/20116))**
284 - **Fix for importing preferred language (and other fields) by label
285 ([19886](https://github.com/civicrm/civicrm-core/pull/19886))**
287 - **Fix AuthX Setting Labels
288 ([20055](https://github.com/civicrm/civicrm-core/pull/20055))**
290 - **Removed limit of 25 groups and past mailings
291 ([20069](https://github.com/civicrm/civicrm-core/pull/20069))**
293 - **When generating boilerplate code from xml, make error text more helpful and
295 ([20054](https://github.com/civicrm/civicrm-core/pull/20054))**
297 - **File CustomField: avoid renaming an empty file
298 ([19890](https://github.com/civicrm/civicrm-core/pull/19890))**
300 - **Calling UFGroup.create to update a profile without specifying is_active=1
302 ([dev/core#2501](https://lab.civicrm.org/dev/core/-/issues/2501):
303 [19995](https://github.com/civicrm/civicrm-core/pull/19995))**
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))**
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))**
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))**
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))**
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))**
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))**
336 - **Set html type of campaign fields
337 ([20215](https://github.com/civicrm/civicrm-core/pull/20215))**
339 Cleanup metadata for the campaign_id field.
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))**
345 Remove trailing white space in url.
347 - **APIv4 - Don't show campaign_id in getFields if campaign component disabled
348 ([20219](https://github.com/civicrm/civicrm-core/pull/20219))**
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))**
357 Fixes an undefined index error after sending thank-you emails/letters for
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))**
366 Default to not cleaning money for order.create api.
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))**
373 - **Fix money formatting opps
374 ([20277](https://github.com/civicrm/civicrm-core/pull/20277))**
376 - **Make reCAPTCHA not conditional on paymentprocessor on contribution page
377 ([20180](https://github.com/civicrm/civicrm-core/pull/20180))**
379 - **Contribution.sendconfirmation API3 function should return
380 ([20182](https://github.com/civicrm/civicrm-core/pull/20182))**
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))**
386 - **Make it clear that doDirectPayment/doTransferCheckout are deprecated and
388 ([20020](https://github.com/civicrm/civicrm-core/pull/20020))**
390 - **Fix Payment.create to update (recalculate) contribution fee_amount
391 ([20008](https://github.com/civicrm/civicrm-core/pull/20008))**
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))**
401 - **Set the smarty variables for mem_status and mem_join_date for back-end
403 ([20224](https://github.com/civicrm/civicrm-core/pull/20224))**
405 - **Membership form Remove check for installments as not on the form (copied
407 ([19964](https://github.com/civicrm/civicrm-core/pull/19964))**
409 ### Drupal integration
411 - **Make APIv4 Subscribers Public to fix D9 install
412 ([20254](https://github.com/civicrm/civicrm-core/pull/20254))**
414 Fixes a "The "Civi_Api4_Event_Subscriber_PermissionCheckSubscriber" service or
415 alias has been removed..." failure on the D9 demo install.
417 - **Fix Drupal8 CiviCRM menu translation on multilingual (and ajax calls)
418 ([20085](https://github.com/civicrm/civicrm-core/pull/20085))**
420 ### Joomla integration
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))**
426 ### Wordpress Integration
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))**
432 - **Update WP permission page for new string array keys
433 ([20045](https://github.com/civicrm/civicrm-core/pull/20045))**
435 ## <a name="misc"></a>Miscellany
437 - **Add amount as standard property to PaymentPropertyBag
438 ([20037](https://github.com/civicrm/civicrm-core/pull/20037))**
440 - **Use propertyBag in doPayment
441 ([20022](https://github.com/civicrm/civicrm-core/pull/20022))**
443 - **Move tpl assignment to email function
444 ([20013](https://github.com/civicrm/civicrm-core/pull/20013))**
446 - **Initial refactor of PayPal core processor to stop using
447 doDirectPayment/doTransferCheckout
448 ([20030](https://github.com/civicrm/civicrm-core/pull/20030))**
450 - **Convert Dummy payment processor to use doPayment function
451 ([20029](https://github.com/civicrm/civicrm-core/pull/20029))**
453 - **Switch to Call contribution api
454 ([20041](https://github.com/civicrm/civicrm-core/pull/20041))**
456 - **Alter dedupe code to call api rather than bao->save()
457 ([20036](https://github.com/civicrm/civicrm-core/pull/20036))**
459 - **Fix the MOST out-of-date parts of the afform readme
460 ([20100](https://github.com/civicrm/civicrm-core/pull/20100))**
462 - **oauth-client - Add test for existing Auth Code flow behavior
463 ([20162](https://github.com/civicrm/civicrm-core/pull/20162))**
465 - **add me ([20183](https://github.com/civicrm/civicrm-core/pull/20183))**
467 - **Make send letter function available to searchkit, individual contributions
468 ([20187](https://github.com/civicrm/civicrm-core/pull/20187))**
470 - **Extract sales tax test config to a trait
471 ([20233](https://github.com/civicrm/civicrm-core/pull/20233))**
473 - **APIv4 - Remove unnecessary custom getActions class
474 ([20181](https://github.com/civicrm/civicrm-core/pull/20181))**
476 - **APIv4 - Remove unnecessary class override (handled by generic)
477 ([20173](https://github.com/civicrm/civicrm-core/pull/20173))**
479 - **APIv4 - Improve entity name lookup
480 ([20056](https://github.com/civicrm/civicrm-core/pull/20056))**
482 - **APIv4 - Deprecate nonstandard syntax for implicit joins
483 ([20130](https://github.com/civicrm/civicrm-core/pull/20130))**
485 - **Extract out getReceiveDate
486 ([20007](https://github.com/civicrm/civicrm-core/pull/20007))**
488 - **Simplify mailing check
489 ([20076](https://github.com/civicrm/civicrm-core/pull/20076))**
491 - **Remove unused functions
492 ([20099](https://github.com/civicrm/civicrm-core/pull/20099))**
494 - **Replace string org.civicrm.search -> org.civicrm.search_kit
495 ([20132](https://github.com/civicrm/civicrm-core/pull/20132))**
497 - **Move more functions to the pdfLetter class
498 ([20143](https://github.com/civicrm/civicrm-core/pull/20143))**
500 - **Remove apparent copy & paste from Contribution pdf letter function
501 ([20161](https://github.com/civicrm/civicrm-core/pull/20161))**
503 - **Remove reference to trxn_id, not on form, from previously shared code
504 ([19965](https://github.com/civicrm/civicrm-core/pull/19965))**
506 - **Add deprected warning to apparently unused functions
507 ([20192](https://github.com/civicrm/civicrm-core/pull/20192))**
509 - **[REF] Add strict types to Utils_Mail::Send
510 ([20171](https://github.com/civicrm/civicrm-core/pull/20171))**
512 - **REF Cleanup ReCAPTCHA code
513 ([20167](https://github.com/civicrm/civicrm-core/pull/20167))**
515 - **[REF] Post move cleanup - switch from $form to $this
516 ([20160](https://github.com/civicrm/civicrm-core/pull/20160))**
518 - **REF reCAPTCHA Simplify buildCustom function on Registration form
519 ([20164](https://github.com/civicrm/civicrm-core/pull/20164))**
521 - **REF reCAPTCHA Simplify buildCustom function on Signature form
522 ([20165](https://github.com/civicrm/civicrm-core/pull/20165))**
524 - **[REF] Minor tidy up - use writeRecord
525 ([20159](https://github.com/civicrm/civicrm-core/pull/20159))**
527 - **[REF] Move more functions back to pdfLetter class
528 ([20155](https://github.com/civicrm/civicrm-core/pull/20155))**
530 - **[REF] Fix Security status check urls to work on WordPress
531 ([20111](https://github.com/civicrm/civicrm-core/pull/20111))**
533 - **[REF] Move functions back to class that uses it
534 ([20136](https://github.com/civicrm/civicrm-core/pull/20136))**
536 - **[Ref] Simplify getMembershipParameters
537 ([20014](https://github.com/civicrm/civicrm-core/pull/20014))**
539 - **(REF) Payflow Pro - Migrate code into a core extension
540 ([20043](https://github.com/civicrm/civicrm-core/pull/20043))**
542 - **[REF] Minor code cleanup
543 ([20175](https://github.com/civicrm/civicrm-core/pull/20175))**
545 - **[REF] Complete decommissioning of
546 CRM/Contribute/Form/Task/PDFLetterCommon.php
547 ([20172](https://github.com/civicrm/civicrm-core/pull/20172))**
549 - **[REF] Cleanup interaction with membership & membership id
550 ([20153](https://github.com/civicrm/civicrm-core/pull/20153))**
552 - **[REF] Fix error where entryURL does not contain id of the contributio…
553 ([19917](https://github.com/civicrm/civicrm-core/pull/19917))**
555 - **[REF] Simplify interaction with contributionRecur
556 ([20017](https://github.com/civicrm/civicrm-core/pull/20017))**
558 - **[REF] Minor tidy up
559 ([20194](https://github.com/civicrm/civicrm-core/pull/20194))**
561 - **[REF] Remove redundant code
562 ([20138](https://github.com/civicrm/civicrm-core/pull/20138))**
564 - **[REF] [ipn] Simplification around contributionRecur ID
565 ([19903](https://github.com/civicrm/civicrm-core/pull/19903))**
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))**
570 - **[REF] [Towards membership api] extract getContributionSource
571 ([19966](https://github.com/civicrm/civicrm-core/pull/19966))**
573 - **[REF] [Towards membership api] Simplify determination on contribution recur
574 contact id ([19902](https://github.com/civicrm/civicrm-core/pull/19902))**
576 - **[Ref] One more place to use total fn
577 ([20010](https://github.com/civicrm/civicrm-core/pull/20010))**
579 - **[NFC] Consistency fix when defining CIVICRM_TEST
580 ([64](https://github.com/civicrm/civicrm-drupal-8/pull/64))**
582 - **[NFC] [Test] Minor preliminary cleanup
583 ([20006](https://github.com/civicrm/civicrm-core/pull/20006))**
585 - **[NFC] [Test] Preliminary cleanup
586 ([20012](https://github.com/civicrm/civicrm-core/pull/20012))**
588 - **[NFC] Code cleanup, docblocks, strict comparison, type hints
589 ([20240](https://github.com/civicrm/civicrm-core/pull/20240))**
591 - **[NFC] code cleanups in test class
592 ([20237](https://github.com/civicrm/civicrm-core/pull/20237))**
594 - **[NFC] Regenerate Grant DAO
595 ([20104](https://github.com/civicrm/civicrm-core/pull/20104))**
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))**
601 - **(NFC) Fix possible flacky tests by splitting the parts of the checksum
602 ([20088](https://github.com/civicrm/civicrm-core/pull/20088))**
604 - **Add unit test for core#19628
605 ([19972](https://github.com/civicrm/civicrm-core/pull/19972))**
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; 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
622 Most authors also reviewed code for this release; in addition, the following
623 reviewers contributed their comments:
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
631 ## <a name="feedback"></a>Feedback
633 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
634 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm