3 Released October 6, 2021
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? | no |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
24 ## <a name="features"></a>Features
28 - **Edit Contact: Hide email signatures for contacts that do not have a user/CMS
30 ([dev/user-interface#38](https://lab.civicrm.org/dev/user-interface/-/issues/38):
31 [21103](https://github.com/civicrm/civicrm-core/pull/21103))**
33 Improves the user interface by hiding the email signature section for contacts
34 for whom it is not relevant.
36 - **Option to rename the file before downloading
37 ([dev/core#2121](https://lab.civicrm.org/dev/core/-/issues/2121):
38 [21006](https://github.com/civicrm/civicrm-core/pull/21006))**
40 Gives the user the option to change the PDF file name on the "Print/Merge
43 - **Add Settings, Disable, Delete buttons to group contacts listing page
44 (Work Towards [dev/core#2546](https://lab.civicrm.org/dev/core/-/issues/2546):
45 [20135](https://github.com/civicrm/civicrm-core/pull/20135))**
47 Adds a "Edit Group Settings" button that pops up the group settings edit
48 overlay to the smog group page.
50 - **On logging detail report show the words not the numbers
51 ([dev/core#2691](https://lab.civicrm.org/dev/core/-/issues/2691):
52 [20907](https://github.com/civicrm/civicrm-core/pull/20907))**
54 Improves logging by displaying more context.
56 - **Tokens - contributions - could we show them all?
57 (Work Towards [dev/core#2745](https://lab.civicrm.org/dev/core/-/issues/2745):
58 [21134](https://github.com/civicrm/civicrm-core/pull/21134))**
60 Ensures support for the Contribution Token "contributionId".
62 - **Allow dedupe by websites
63 ([dev/core#2770](https://lab.civicrm.org/dev/core/-/issues/2770):
64 [21168](https://github.com/civicrm/civicrm-core/pull/21168))**
66 Makes it so one can dedupe based on websites.
68 - **APIv4 pseudoconstant improvements
69 ([21184](https://github.com/civicrm/civicrm-core/pull/21184))**
71 Makes SearchKit handle large option lists more efficiently, and adds APIv4
72 field metadata about available suffixes.
74 - **SearchKit - Add placeholder to token select
75 ([21172](https://github.com/civicrm/civicrm-core/pull/21172))**
77 Adds placeholder text to the token select dropdown in SearchKit.
79 - **Searchkit - Add grid display layout
80 ([dev/core#2776](https://lab.civicrm.org/dev/core/-/issues/2776):
81 [21194](https://github.com/civicrm/civicrm-core/pull/21194))**
83 Adds support to display SearchKit results in a grid format.
85 - **SearchKit - Merge admin results table with searchDisplay code
86 ([21069](https://github.com/civicrm/civicrm-core/pull/21069) and
87 [21488](https://github.com/civicrm/civicrm-core/pull/21488))**
89 Improves and streamlines the SearchKit Angular code to reconcile two
90 different ways of fetching, formatting & displaying results. This reduces code
91 duplication, while adding a few features from the admin table to all search
94 - **SearchKit - Add download CSV action
95 ([21328](https://github.com/civicrm/civicrm-core/pull/21328))**
97 Adds an option to SearchKit to download a CSV.
99 - **SearchKit - Add links to admin table and refresh after popups
100 ([21343](https://github.com/civicrm/civicrm-core/pull/21343))**
102 Adds quick-action links to the SearchKit admin results table.
104 - **SearchKit - Use a search display to display searches
105 ([21270](https://github.com/civicrm/civicrm-core/pull/21270))**
107 Simplifies code by using a SearchKit display to display searches.
109 - **Include random as an option when sorting displays
110 ([dev/report#75](https://lab.civicrm.org/dev/report/-/issues/75):
111 [21177](https://github.com/civicrm/civicrm-core/pull/21177))**
113 Adds a sort option of random to SearchKit.
115 - **Searchkit: Add image field handler
116 ([dev/core#2781](https://lab.civicrm.org/dev/core/-/issues/2781):
117 [21300](https://github.com/civicrm/civicrm-core/pull/21300))**
119 Makes it possible to show images in SearchKit displays.
121 - **SearchKit - Allow tokens in menu button text
122 ([21217](https://github.com/civicrm/civicrm-core/pull/21217))**
124 Makes it so users can include tokens in SearchKit menu button text.
126 - **TokenProcessor - Allow defining Smarty variables which are populated via
127 token ([21336](https://github.com/civicrm/civicrm-core/pull/21336))**
129 Allows more interoperability between Smarty expressions and tokens.
131 - **Token Parser - Allow tokens with multiple dots (eg
132 {contribution.contribution_recur_id.amount})
133 ([21076](https://github.com/civicrm/civicrm-core/pull/21076))**
135 Adjusts the naming/parsing rules for Civi-style tokens so that tokens may
136 include dots and colons.
138 - **Afform - support file uploads
139 ([21150](https://github.com/civicrm/civicrm-core/pull/21150))**
141 Supports file fields as part of Afform.
143 - **Not possible to set the location type (address, mail, telephone) to a
145 ([dev/core#2703](https://lab.civicrm.org/dev/core/-/issues/2703):
146 [21254](https://github.com/civicrm/civicrm-core/pull/21254))**
148 Makes it possible in Afform to select a single location type for an address,
149 email, phone etc. block instead of having the field on the form.
151 - **Afform - Store submissions in a new database table
152 ([21105](https://github.com/civicrm/civicrm-core/pull/21105))**
154 Adds a Afform setting "log submissions", when checked, Afform submissions are
155 stored in the database.
157 - **Move financial acl setting to the extension
158 ([21120](https://github.com/civicrm/civicrm-core/pull/21120))**
160 Moves financial ACL settings to the financial ACL extension.
162 - **SavedSearch - Add pseudoconstant for api_entity field
163 ([21312](https://github.com/civicrm/civicrm-core/pull/21312))**
165 Adds a pseudoconstant to facilitate display in the UI of what a search is for,
166 e.g. ->addSelect('api_entity:label') would return "Contacts" for a search of
169 - **Change the default PDF file name from "CiviLetter.pdf" to use the Activity
170 Subject, if available
171 ([21220](https://github.com/civicrm/civicrm-core/pull/21220))**
173 Improves PDF file naming to be more specific.
175 - **Change PDF file name from "civicrmContributionReceipt.pdf" to use the
176 standard "receipt.pdf" file name
177 ([21221](https://github.com/civicrm/civicrm-core/pull/21221))**
179 Improves PDF file naming.
181 - **Scheduled Reminders UI - Show more activity tokens in admin GUI
182 ([21091](https://github.com/civicrm/civicrm-core/pull/21091))**
184 Adds more Activity Tokens to the Scheduled Reminders UI.
188 - **Logging improvements for "Failed to update contribution in database"
189 ([21243](https://github.com/civicrm/civicrm-core/pull/21243))**
191 Improves logging when contribution fails.
193 - **Add recurring contributions to contribution reports
194 (Work Towards [dev/report#63](https://lab.civicrm.org/dev/report/-/issues/63):
195 [20168](https://github.com/civicrm/civicrm-core/pull/20168))**
197 Adds "Contribution Recurring" as a filter, column and group by to the
198 Contribution Summary Report.
202 - **System Workflow Messages - Improve localization experience (Work Towards
203 [dev/mail#83](https://lab.civicrm.org/dev/mail/-/issues/83):
204 [21139](https://github.com/civicrm/civicrm-core/pull/21139))**
206 Introduces a class contracts for system workflow messages which will enable
211 - **Membership api for v4
212 ([dev/core#2634](https://lab.civicrm.org/dev/core/-/issues/2634):
213 [21106](https://github.com/civicrm/civicrm-core/pull/21106))**
215 Adds the Membership entity to APIv4.
217 - **Fix code to use Order api to create Memberships in core forms
218 (Work Towards [dev/core#2717](https://lab.civicrm.org/dev/core/-/issues/2717):
219 [20936](https://github.com/civicrm/civicrm-core/pull/20936),
220 [21126](https://github.com/civicrm/civicrm-core/pull/21126) and
221 [20935](https://github.com/civicrm/civicrm-core/pull/20935))**
223 Work towards using the Order API to create Memberships in core forms.
225 ### Joomla Integration
227 - **CiviCRM-Joomla should accept web-service calls
228 ([58](https://github.com/civicrm/civicrm-joomla/pull/58))**
230 Ensures that on a stock configuration of CiviCRM-Joomla, it is possible to
231 create a page-route for accepting web-service calls.
233 ## <a name="bugs"></a>Bugs resolved
237 - **Multi-lingual: Contact Type label is cached regardless of language
238 ([dev/translation#70](https://lab.civicrm.org/dev/translation/-/issues/70):
239 [21268](https://github.com/civicrm/civicrm-core/pull/21268))**
241 Fixes loading multiple translations within same page-view (OptionValues,
244 - **Activity export broken - takes you to some other screen instead
245 ([dev/core#2835](https://lab.civicrm.org/dev/core/-/issues/2835):
246 [21456](https://github.com/civicrm/civicrm-core/pull/21456))**
248 - **APIv4 - entityBatch linkage
249 ([dev/core#2682](https://lab.civicrm.org/dev/core/-/issues/2682):
250 [21241](https://github.com/civicrm/civicrm-core/pull/21241))**
252 Work Towards APIv4 entity parity. Ensures that the values for entity_table are
255 - **Consider replacing fopen() call in CRM_Utils_File::isIncludable with
256 stream_resolve_include_path()
257 ([dev/core#2730](https://lab.civicrm.org/dev/core/-/issues/2730):
258 [21060](https://github.com/civicrm/civicrm-core/pull/21060))**
260 Replaces fopen call in CRM_Utils_File::isIncludable with one that doesn't need
261 error-supression to avoid problems in php8.
263 - **SearchKit: have a quick Export task
264 (Work Towards [dev/core#2732](https://lab.civicrm.org/dev/core/-/issues/2732):
265 [21320](https://github.com/civicrm/civicrm-core/pull/21320))**
267 Refactoring work towards making it possible to have a direct export feature in
270 - **SearchKit - Fix deleting search displays
271 ([21444](https://github.com/civicrm/civicrm-core/pull/21444))**
273 - **SearchKit - Fix anonymous access to running search displays
274 #([21752](https://github.com/civicrm/civicrm-core/pull/21752))**
276 Recently SearchKit added the ability for anonymous users to access search
277 displays. However, due to an oversight the feature doesn't actually work for
278 anonymous users. This fixes the problem.
280 - **Afform - ensure dragging classes are removed when not sorting
281 ([21750](https://github.com/civicrm/civicrm-core/pull/21750))**
283 Fixes an annoying UI glitch in Afform where the screen can appear "locked" or
284 "frozen" after dragging fields into a fieldset.
286 - **Expose Contribution token processor
287 ([dev/core#2747](https://lab.civicrm.org/dev/core/-/issues/2747):
288 [21046](https://github.com/civicrm/civicrm-core/pull/21046) and
289 [21057](https://github.com/civicrm/civicrm-core/pull/21057))**
291 Reconciles contribution legacy tokens and scheduled reminders tokens.
293 - **CRM_Core_BAO_CustomField::getChangeSerialize always returns a change
294 ([dev/core#2762](https://lab.civicrm.org/dev/core/-/issues/2762):
295 [21160](https://github.com/civicrm/civicrm-core/pull/21160))**
297 - **Caching issue on apiv4 + install
298 ([dev/core#2763](https://lab.civicrm.org/dev/core/-/issues/2763):
299 [21166](https://github.com/civicrm/civicrm-core/pull/21166))**
301 - **CiviCRM email validation failing incorrectly
302 ([dev/core#2769](https://lab.civicrm.org/dev/core/-/issues/2769):
303 [329](https://github.com/civicrm/civicrm-packages/pull/329) and
304 [21169](https://github.com/civicrm/civicrm-core/pull/21169))**
306 - **Sort by date column on multirecord field listing section on profile edit
308 ([dev/core#2774](https://lab.civicrm.org/dev/core/-/issues/2774):
309 [21191](https://github.com/civicrm/civicrm-core/pull/21191))**
311 - **Error when using search in 'Find and Merge Duplicate Contacts' page
312 ([dev/core#2778](https://lab.civicrm.org/dev/core/-/issues/2778):
313 [21223](https://github.com/civicrm/civicrm-core/pull/21223))**
315 - **Print/merge document has awkward filename if activity subject uses
317 ([dev/core#2789](https://lab.civicrm.org/dev/core/-/issues/2789):
318 [21259](https://github.com/civicrm/civicrm-core/pull/21259))**
320 - **Contribution custom field tokens are duplicated in the dropdown
321 ([dev/core#2806](https://lab.civicrm.org/dev/core/-/issues/2806):
322 [21337](https://github.com/civicrm/civicrm-core/pull/21337))**
324 - **[regression] Search forms with entities that include File custom fields
325 don't render in Afform Admin screen
326 ([dev/core#2751](https://lab.civicrm.org/dev/core/-/issues/2751):
327 [21084](https://github.com/civicrm/civicrm-core/pull/21084))**
329 - **APIv4 - Throw exception instead of munging illegal join aliases
330 ([21072](https://github.com/civicrm/civicrm-core/pull/21072))**
332 Improves APIv4 validation of explicit join aliases.
334 - **Fix deprecated API4 Join on Email in dynamic profile
335 ([21308](https://github.com/civicrm/civicrm-core/pull/21308))**
337 - **Search Kit doesn't display related contact custom fields
338 ([dev/report#73](https://lab.civicrm.org/dev/report/-/issues/73):
339 [21071](https://github.com/civicrm/civicrm-core/pull/21071))**
341 - **SearchKit - Misc bulk action bug fixes
342 ([21159](https://github.com/civicrm/civicrm-core/pull/21159))**
344 - **SearchKit - Fix aggregated joins
345 ([21411](https://github.com/civicrm/civicrm-core/pull/21411))**
347 - **SearchKit - Fix pager count and add 'None Found' text in empty tables
348 ([21333](https://github.com/civicrm/civicrm-core/pull/21333))**
350 - **Fix Searchkit "Add" columns button UI
351 ([21315](https://github.com/civicrm/civicrm-core/pull/21315))**
353 - **Afform - Fix button appearance and block form during submission
354 ([21287](https://github.com/civicrm/civicrm-core/pull/21287))**
356 - **Afform - fix contact source field & field defaults
357 ([21228](https://github.com/civicrm/civicrm-core/pull/21228))**
359 - **Fix support link just added in oauth-client extension info.xml
360 ([21256](https://github.com/civicrm/civicrm-core/pull/21256))**
362 - **better target multivalue checkbox and multiselect import validation
363 ([21317](https://github.com/civicrm/civicrm-core/pull/21317))**
365 - **Do not add tracking to internal anchor URLs
366 ([20115](https://github.com/civicrm/civicrm-core/pull/20115))**
368 - **Fix for new prefetch key
369 ([21292](https://github.com/civicrm/civicrm-core/pull/21292))**
371 - **Do not enable custom activity search on new installs
372 ([21260](https://github.com/civicrm/civicrm-core/pull/21260))**
374 - **Add date metadata for email.on_hold, reset_date
375 ([21233](https://github.com/civicrm/civicrm-core/pull/21233))**
377 - **Add no-prefetch campaign pseudoconstants
378 ([21185](https://github.com/civicrm/civicrm-core/pull/21185))**
380 - **Replace extension key with label during install/upgrade/disable/uninstall
381 ([21094](https://github.com/civicrm/civicrm-core/pull/21094))**
383 - **ActionSchedule - Pass real batches into TokenProcessor. Simplify
385 ([21088](https://github.com/civicrm/civicrm-core/pull/21088))**
387 - **MessageTemplate::sendTemplate() - Accept `array $messageTemplate` and `array
388 $tokenContext` ([21073](https://github.com/civicrm/civicrm-core/pull/21073))**
390 - **Alternate to 20131 - Avoid crash during import for blank lines in a
392 ([21216](https://github.com/civicrm/civicrm-core/pull/21216))**
394 - **CRM_Queue_Service - Use ?? instead of error-supression operator
395 ([21207](https://github.com/civicrm/civicrm-core/pull/21207))**
397 - **Respect http_timeout core setting for Guzzle HTTP requests
398 ([21096](https://github.com/civicrm/civicrm-core/pull/21096))**
400 - **Smarty notice - Explicitly set hideRelativeLabel var on Find Cases form
401 ([21070](https://github.com/civicrm/civicrm-core/pull/21070))**
403 - **(Smart Group) is being constantly added while editing the smart group title
404 from 'Manage Group' page
405 ([20898](https://github.com/civicrm/civicrm-core/pull/20898))**
407 - **Enotice fixes in tpl
408 ([21170](https://github.com/civicrm/civicrm-core/pull/21170))**
410 - **Template fixes - notices, syntax
411 ([21257](https://github.com/civicrm/civicrm-core/pull/21257))**
413 - **Fix invalid parameter giving E_WARNING
414 ([21255](https://github.com/civicrm/civicrm-core/pull/21255))**
416 - **Fix search display access for non-admin users
417 ([21082](https://github.com/civicrm/civicrm-core/pull/21082))**
419 - **Use convenience function for one-off token evaluations to avoid too-long
420 filenames and possible privacy issues
421 ([21140](https://github.com/civicrm/civicrm-core/pull/21140))**
423 - **Replace deprecated calls to `renderMessageTemplate()`
424 ([21121](https://github.com/civicrm/civicrm-core/pull/21121))**
426 - **Scheduled Reminders - Pass locale through to TokenProcessor
427 ([21085](https://github.com/civicrm/civicrm-core/pull/21085))**
431 - **Fix caching on campaign pseudoconstant
432 ([21083](https://github.com/civicrm/civicrm-core/pull/21083))**
436 - **Fix the check to see if the financialAclExtension is installed
437 ([21077](https://github.com/civicrm/civicrm-core/pull/21077))**
439 - **Simplify ContributionView form. Always display "lineitems"
440 ([21285](https://github.com/civicrm/civicrm-core/pull/21285))**
442 - **Can we re-order the 'recur links'
443 ([dev/core#2843](https://lab.civicrm.org/dev/core/-/issues/2843):
444 [21559](https://github.com/civicrm/civicrm-core/pull/21559))**
446 The new link to View Template on a recurring contribution row is now moved to
447 the end, allowing the Edit link to return to the second spot.
449 - **When a recurring contribution template has no line items, the contact
450 contribution tab crashes
451 ([dev/financial#187](https://lab.civicrm.org/dev/financial/-/issues/187):
452 [21734](https://github.com/civicrm/civicrm-core/pull/21734))**
454 - **Call line item pre hook after tax amount is calculated
455 ([21731](https://github.com/civicrm/civicrm-core/pull/21731))**
457 `hook_civicrm_pre` is now invoked on a line item entity after the tax amount
458 has been calculated for it.
462 - **CiviCRM Mailing, function unsub_from_mailing has spelling error,
463 "experiement" impacts A/B Mailing unsubscribes
464 ([21245](https://github.com/civicrm/civicrm-core/pull/21245))**
466 - **In an email, a token from an extension in a subject will inhibits the same
467 token group in the email body
468 ([dev/core#2673](https://lab.civicrm.org/dev/core/-/issues/2673):
469 [21080](https://github.com/civicrm/civicrm-core/pull/21080))**
471 - **Log details of mailing error and don't display details to end user
472 ([21173](https://github.com/civicrm/civicrm-core/pull/21173))**
476 - **Fix Membership.create in BAO to respect passed in status_id
477 ([20976](https://github.com/civicrm/civicrm-core/pull/20976))**
479 - **Membership Dashboard - Fatal Error starting with 5.41.beta1
480 ([dev/core#2758](https://lab.civicrm.org/dev/core/-/issues/2758):
481 [21171](https://github.com/civicrm/civicrm-core/pull/21171) and
482 [21167](https://github.com/civicrm/civicrm-core/pull/21167))**
484 - **Update MembershipType.duration and MembershipStatus.name to be required
485 ([21119](https://github.com/civicrm/civicrm-core/pull/21119))**
487 - **Fix missing value of End Adjustment column from Membership status page
488 ([21664](https://github.com/civicrm/civicrm-core/pull/21664))**
490 ### Drupal Integration
492 - **Syntax errors when loading sample data
493 ([dev/drupal#161](https://lab.civicrm.org/dev/drupal/-/issues/161):
494 [648](https://github.com/civicrm/civicrm-drupal/pull/648))**
496 Removes drush sample data install option that doesn't work.
498 - **Replace Drupal 9 user function, function getUsername is no more valid
499 ([328](https://github.com/civicrm/civicrm-packages/pull/328))**
501 ### Joomla Integration
503 - **Fixes unusable modals in Joomla 4
504 ([21286](https://github.com/civicrm/civicrm-core/pull/21286))**
506 - **Tidies Joomla 4 integration (menu, padding) after final release
507 ([21342](https://github.com/civicrm/civicrm-core/pull/21342))**
509 ## <a name="misc"></a>Miscellany
511 - **MessageTemplate - Add renderTemplate(). Deprecate renderMessageTemplate().
512 ([21115](https://github.com/civicrm/civicrm-core/pull/21115))**
514 - **Provided standard links in ext/oauth-client/info.xml, fixed typo
515 ([21252](https://github.com/civicrm/civicrm-core/pull/21252))**
517 - **Use getter to get subscription id
518 ([21309](https://github.com/civicrm/civicrm-core/pull/21309))**
520 - **Extract ACL contact cache clearing part out
521 ([21219](https://github.com/civicrm/civicrm-core/pull/21219))**
523 - **Update quickform original
524 ([330](https://github.com/civicrm/civicrm-packages/pull/330))**
526 - **Afform - Rename blocks and joins for clarity
527 ([21218](https://github.com/civicrm/civicrm-core/pull/21218))**
529 - **Afform - Optimize Get by checking type
530 ([21316](https://github.com/civicrm/civicrm-core/pull/21316))**
532 - **[REF] Cleanup pdf classes to use a trait like we do for email classes
533 ([dev/core#2790](https://lab.civicrm.org/dev/core/-/issues/2790):
534 [21334](https://github.com/civicrm/civicrm-core/pull/21334),
535 [21305](https://github.com/civicrm/civicrm-core/pull/21305),
536 [21310](https://github.com/civicrm/civicrm-core/pull/21310),
537 [21276](https://github.com/civicrm/civicrm-core/pull/21276),
538 [21297](https://github.com/civicrm/civicrm-core/pull/21297),
539 [21331](https://github.com/civicrm/civicrm-core/pull/21331) and
540 [21290](https://github.com/civicrm/civicrm-core/pull/21290))**
542 - **Upgrade angular-file-uploader to v2.6.1
543 ([21081](https://github.com/civicrm/civicrm-core/pull/21081))**
545 - **Upgrade Pear/DB package to be version 1.11.0
546 ([21087](https://github.com/civicrm/civicrm-core/pull/21087))**
548 - **CRM_Core_Component - Remove unused code
549 ([21086](https://github.com/civicrm/civicrm-core/pull/21086))**
551 - **Move make-sure-single-set out of shared function
552 ([21062](https://github.com/civicrm/civicrm-core/pull/21062))**
554 - **Remove unused, duplicate functions getEntitiesByTag
555 ([21209](https://github.com/civicrm/civicrm-core/pull/21209))**
557 - **Remove deprecated function
558 ([21179](https://github.com/civicrm/civicrm-core/pull/21179))**
560 - **Remove extraneous buildQuickForm
561 ([21325](https://github.com/civicrm/civicrm-core/pull/21325))**
563 - **Remove unused assignment
564 ([21061](https://github.com/civicrm/civicrm-core/pull/21061))**
566 - **Remove no longer used variable in Email.tpl / smarty warning
567 ([21074](https://github.com/civicrm/civicrm-core/pull/21074))**
569 - **Remove deprecated isDevelopment() function
570 ([21269](https://github.com/civicrm/civicrm-core/pull/21269))**
572 - **[REF] Move acl delete logic to an event listener
573 ([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
574 [21201](https://github.com/civicrm/civicrm-core/pull/21201) and
575 [21213](https://github.com/civicrm/civicrm-core/pull/21213))**
577 - **[REF] Remove references to contribution_invoice_settings (Work Towards
578 [dev/core#2719](https://lab.civicrm.org/dev/core/-/issues/2719):
579 [20991](https://github.com/civicrm/civicrm-core/pull/20991))**
581 - **[REF] Afform - Code cleanup in LoadAdminData API action
582 ([21089](https://github.com/civicrm/civicrm-core/pull/21089))**
584 - **[REF] SearchKit - Refactor search task code to share a trait
585 ([21156](https://github.com/civicrm/civicrm-core/pull/21156))**
587 - **[REF] SearchKit - display code refactor + pager options
588 ([21049](https://github.com/civicrm/civicrm-core/pull/21049))**
590 - **[REF] SearchKit - Use non-deprecated join syntax when loading standalone
591 displays ([21095](https://github.com/civicrm/civicrm-core/pull/21095))**
593 - **[REF] APIv4 Notes - Ensure child notes are deleted with parent, and hooks
594 are called ([21208](https://github.com/civicrm/civicrm-core/pull/21208))**
596 - **[REF] Remove unused/unneeded variables from Note View page
597 ([21226](https://github.com/civicrm/civicrm-core/pull/21226))**
599 - **[REF] CRM_Utils_Recent - Use hook listener to delete items
600 ([21204](https://github.com/civicrm/civicrm-core/pull/21204) and
601 [21492](https://github.com/civicrm/civicrm-core/pull/21492))**
603 - **[REF] Deprecate unnecessary del() functions
604 ([21200](https://github.com/civicrm/civicrm-core/pull/21200))**
606 - **REF Switch to CRM_Core_Form::setTitle() instead of
607 CRM_Utils_System::setTitle() part 1
608 ([21193](https://github.com/civicrm/civicrm-core/pull/21193))**
610 - **[Ref] remove unused variable
611 ([21161](https://github.com/civicrm/civicrm-core/pull/21161))**
613 - **[Ref] Move id fetching to the classes
614 ([21075](https://github.com/civicrm/civicrm-core/pull/21075))**
616 - **(REF) ReflectionUtils - Add findStandardProperties() and findMethodHelpers()
617 ([21114](https://github.com/civicrm/civicrm-core/pull/21114))**
619 - **[Ref] Simplify IF clause
620 ([21078](https://github.com/civicrm/civicrm-core/pull/21078))**
622 - **[Ref] extract function to getEmailDefaults
623 ([21067](https://github.com/civicrm/civicrm-core/pull/21067))**
625 - **[Ref] Clarify what parameters are passed in
626 ([21063](https://github.com/civicrm/civicrm-core/pull/21063))**
628 - **[Ref] Move rule to email trait
629 ([21066](https://github.com/civicrm/civicrm-core/pull/21066))**
631 - **[Ref] cleanup alterActionSchedule
632 ([21047](https://github.com/civicrm/civicrm-core/pull/21047))**
634 - **[Ref] Copy emailcommon function back to email trait
635 ([21251](https://github.com/civicrm/civicrm-core/pull/21251))**
637 - **[REF] Update a few references to invoicing
638 ([21101](https://github.com/civicrm/civicrm-core/pull/21101))**
640 - **[Ref] intial testing on case tokens, make knownTokens optional
641 ([21289](https://github.com/civicrm/civicrm-core/pull/21289))**
643 - **[Ref] Deprecate Core_Error handling
644 ([21279](https://github.com/civicrm/civicrm-core/pull/21279))**
646 - **[REF] Fix Page Hook test on php8 by putting in guard into customDataB…
647 ([21344](https://github.com/civicrm/civicrm-core/pull/21344))**
649 - **[REF] Fix undefined smarty vars in Advanced Search
650 ([21321](https://github.com/civicrm/civicrm-core/pull/21321))**
652 - **[REF] Improve Custom data insert performance when using the copyCusto…
653 ([21313](https://github.com/civicrm/civicrm-core/pull/21313))**
655 - **[REF] Copy preProcessFromAddress back into the pdf function
656 ([21306](https://github.com/civicrm/civicrm-core/pull/21306))**
658 - **[REF] Remove duplicate IF
659 ([21298](https://github.com/civicrm/civicrm-core/pull/21298))**
661 - **[REF] Minor extraction
662 ([21296](https://github.com/civicrm/civicrm-core/pull/21296))**
664 - **[REF] Remove unreachable code
665 ([21294](https://github.com/civicrm/civicrm-core/pull/21294))**
667 - **[Ref] Minor extraction
668 ([21293](https://github.com/civicrm/civicrm-core/pull/21293))**
670 - **REF Don't check if id is set in ContributionView form - it's required
671 ([21274](https://github.com/civicrm/civicrm-core/pull/21274))**
673 - **[REF] Remove meaningless if
674 ([21273](https://github.com/civicrm/civicrm-core/pull/21273))**
676 - **[NFC] Fix APIv4 Conformance tests on php8
677 ([21302](https://github.com/civicrm/civicrm-core/pull/21302))**
679 - **[NFC] - Replace deprecated function in AngularLoaderTest
680 ([21244](https://github.com/civicrm/civicrm-core/pull/21244))**
682 - **[NFC] CRM_Utils_SystemTest - Call to Uri->withPath() using deprecated format
683 ([21215](https://github.com/civicrm/civicrm-core/pull/21215))**
685 - **[NFC] CRM_Extension_Manager_ModuleUpgTest - use ?? instead of
686 error-suppression operator
687 ([21214](https://github.com/civicrm/civicrm-core/pull/21214))**
689 - **[NFC] CRM_Extension_Manager_ModuleTest - use ?? instead of error-suppression
690 operator ([21206](https://github.com/civicrm/civicrm-core/pull/21206))**
692 - **[NFC] Update CRM_Core_RegionTest so it doesn't need the error-suppression
693 operator ([21155](https://github.com/civicrm/civicrm-core/pull/21155))**
695 - **[NFC] Update testCaseActivityCopyTemplate to provide variable that would
697 ([21146](https://github.com/civicrm/civicrm-core/pull/21146))**
699 - **NFC - Fix docblock in CRM_Core_Transaction
700 ([21125](https://github.com/civicrm/civicrm-core/pull/21125))**
702 - **[NFC] {Test} Minor cleanup
703 ([21116](https://github.com/civicrm/civicrm-core/pull/21116))**
705 - **[NFC] Fix UpdateSubscriptionTest on php8 by creating a Payment Processor
706 ([21324](https://github.com/civicrm/civicrm-core/pull/21324))**
708 - **(NFC) Expand test coverage for scheduled-reminders with `{activity.*}`
709 tokens ([21092](https://github.com/civicrm/civicrm-core/pull/21092))**
711 - **(NFC) TokenProcessorTest - Add scenario inspired by dev/core#2673
712 ([21090](https://github.com/civicrm/civicrm-core/pull/21090))**
714 - **[NFC] Fix E-notice in Afform unit tests
715 ([21345](https://github.com/civicrm/civicrm-core/pull/21345))**
717 - **[NFC] Cleanup boilerplate code in extension upgrader classes
718 ([21340](https://github.com/civicrm/civicrm-core/pull/21340))**
720 - **[NFC/Unit test] Update flaky test
721 CRM_Utils_TokenConsistencyTest::testCaseTokenConsistency
722 ([21341](https://github.com/civicrm/civicrm-core/pull/21341))**
724 - **(NFC) MailingQueryEvent - Add more docblocks about query-writing and
726 ([21098](https://github.com/civicrm/civicrm-core/pull/21098))**
728 - **[NFC] Fix undefined array key when running CRM unit test suite in php8
729 ([21314](https://github.com/civicrm/civicrm-core/pull/21314))**
731 - **Add test to UpdateSubscription form
732 ([21282](https://github.com/civicrm/civicrm-core/pull/21282))**
734 - **Improve test for CRM_Utils_Recent
735 ([21222](https://github.com/civicrm/civicrm-core/pull/21222))**
737 ## <a name="credits"></a>Credits
739 This release was developed by the following code authors:
741 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
742 Australian Greens - John Twyman; Benjamin W; CiviCRM - Coleman Watts, Tim Otten;
743 CompuCorp - Debarshi Bhaumik, Lisandro; Coop SymbioTIC - Mathieu Lutfy; Dave D;
744 Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick
745 Figel; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen
746 Shaw; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew
747 Wire; Nicol Wistreich; Skvare - Sunil Pawar; Tadpole Collective - Kevin
748 Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia
749 Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
751 Most authors also reviewed code for this release; in addition, the following
752 reviewers contributed their comments:
754 Black Brick Software - David Hayes; CiviCoop - Jaap Jansma; Joinery - Allen
755 Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; redcuillin
757 ## <a name="feedback"></a>Feedback
759 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
760 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm