3 Released November 3, 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?** | **yes** |
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 - **Use money formatting for currency in templates
29 ([21783](https://github.com/civicrm/civicrm-core/pull/21783))**
31 Receipt templates now use the more modern Brick/Money library to format
32 currency amounts. This will provide better formats in most cases, but it will
35 - **Add sort functionality to event summary report
36 ([21501](https://github.com/civicrm/civicrm-core/pull/21501))**
38 Improves Event Summary Report by making it possible to sort columns.
40 - **Add REGEXP/NOT REGEXP operators to API4
41 ([dev/core#2793](https://lab.civicrm.org/dev/core/-/issues/2793):
42 [21288](https://github.com/civicrm/civicrm-core/pull/21288))**
44 Makes it so users can use regular expressions operators in APIv4.
46 - **APIv4 - Add Contact.age_years extra field to make age calculations easy
47 ([21718](https://github.com/civicrm/civicrm-core/pull/21718))**
49 Adds a calculated field to APIv4 which makes it simple to return or filter on
52 - **APIv4 - Add support for sql equations
53 ([21551](https://github.com/civicrm/civicrm-core/pull/21551))**
55 Allows equations e.g. (1 + 1) as sql expressions in APIv4 queries.
57 - **Apiv4 entity parity (Work Towards
58 [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
59 [21355](https://github.com/civicrm/civicrm-core/pull/21355) and
60 [21500](https://github.com/civicrm/civicrm-core/pull/21500))**
62 Adds APIv4 entity support for the PrintLabel and Survey entities.
64 - **APIv4 - Use event instead of hardcoded list to resolve entityName to
65 className ([21771](https://github.com/civicrm/civicrm-core/pull/21771),
66 [21803](https://github.com/civicrm/civicrm-core/pull/21803),
67 [21819](https://github.com/civicrm/civicrm-core/pull/21819),
68 [21824](https://github.com/civicrm/civicrm-core/pull/21824),
69 [21828](https://github.com/civicrm/civicrm-core/pull/21828),
70 [21839](https://github.com/civicrm/civicrm-core/pull/21839), and
71 [21851](https://github.com/civicrm/civicrm-core/pull/21851))**
73 This allows core and extension-introduced entities to have arbitrary class and
74 entity names instead of requiring the two to agree.
76 - **activity import: prepend custom group title to custom fields
77 ([21318](https://github.com/civicrm/civicrm-core/pull/21318))**
79 Makes it possible to distinguish between core and custom fields on the
80 Activity Import screen.
82 - **No way to distinguish the core and custom fields on Find and Merge Duplicate
84 ([dev/core#2766](https://lab.civicrm.org/dev/core/-/issues/2766):
85 [21728](https://github.com/civicrm/civicrm-core/pull/21728))**
87 Makes it possible to distinguish between core and custom fields on the Find
88 and Merge Duplicate Contacts page.
90 - **Support participant & membership tokens in send-email tasks
91 ([21745](https://github.com/civicrm/civicrm-core/pull/21745) and
92 [dev/core#2895](https://lab.civicrm.org/dev/core/-/issues/2895):
93 [21801](https://github.com/civicrm/civicrm-core/pull/21801))**
95 Makes it so users can use participant & membership tokens in send-email tasks.
97 - **Add participant tokens to pdf task
98 ([21695](https://github.com/civicrm/civicrm-core/pull/21695))**
100 Makes it so users can use participant tokens in PDF tasks.
102 - **Meta - token usage 5.43 standardisation effort
103 ([dev/core#2864](https://lab.civicrm.org/dev/core/-/issues/2864):
104 [21428](https://github.com/civicrm/civicrm-core/pull/21428),
105 [21605](https://github.com/civicrm/civicrm-core/pull/21605),
106 [21713](https://github.com/civicrm/civicrm-core/pull/21713),
107 [21584](https://github.com/civicrm/civicrm-core/pull/21584),
108 [21523](https://github.com/civicrm/civicrm-core/pull/21523),
109 [21706](https://github.com/civicrm/civicrm-core/pull/21706),
110 [21806](https://github.com/civicrm/civicrm-core/pull/21806),
111 [21821](https://github.com/civicrm/civicrm-core/pull/21821),
112 [21530](https://github.com/civicrm/civicrm-core/pull/21530),
113 [21537](https://github.com/civicrm/civicrm-core/pull/21537), and
114 [21913](https://github.com/civicrm/civicrm-core/pull/21913))**
116 Standardizes Token usage.
118 - **Add {domain.now}, supporting |crmDate
119 ([21531](https://github.com/civicrm/civicrm-core/pull/21531))**
121 Adds new token {domain.now} that provides the current date.
123 - **Afform - Use search display name as field prefix for url-based field
124 defaults ([21645](https://github.com/civicrm/civicrm-core/pull/21645))**
126 Makes field prefix optional for Afform url-based defaults, and uses search
127 display name as prefix for search forms.
129 - **Afform - Accept default field values from the url
130 ([21606](https://github.com/civicrm/civicrm-core/pull/21606))**
132 Allows default Afform field values to be set from the url.
134 - **Afform Admin add link icon & template cleanup
135 ([21764](https://github.com/civicrm/civicrm-core/pull/21764))**
137 Minor cleanup to improve template efficiency, style afform page link, and add
140 - **Search kit - default filter - primary
141 ([dev/core#2852](https://lab.civicrm.org/dev/core/-/issues/2852):
142 [21574](https://github.com/civicrm/civicrm-core/pull/21574))**
144 Adds is_primary as a default SearchKit filter.
146 - **SearchKit - Add UI for arithmetic equations
147 ([21600](https://github.com/civicrm/civicrm-core/pull/21600))**
149 Allows adding, subtracting, dividing and multiplying any number of values in
152 - **SearchKit - Support multiple arguments to field transformations aka SQL
153 functions ([21528](https://github.com/civicrm/civicrm-core/pull/21528) and
154 [21535](https://github.com/civicrm/civicrm-core/pull/21535))**
156 Enhances the SearchKit UI to allow multiple fields to be acted upon at once in
159 - **SearchKit - Add pseudo-fields for row number and current user
160 ([21435](https://github.com/civicrm/civicrm-core/pull/21435))**
162 Makes a couple calculated fields available for use as columns or tokens in
165 - **SearchKit - Support custom fields in bridge join entities
166 ([21424](https://github.com/civicrm/civicrm-core/pull/21424))**
168 Makes it possible to use relationship custom data throughout Search Kit.
170 - **SearchKit & Afform - Use Bootstrap table styles on admin screens
171 ([21405](https://github.com/civicrm/civicrm-core/pull/21405) and
172 [21397](https://github.com/civicrm/civicrm-core/pull/21397))**
174 applies Bootstrap table styles to admin tables in SearchKit and Afform.
176 - **SearchKit - Filter search listing by creator
177 ([21388](https://github.com/civicrm/civicrm-core/pull/21388))**
179 Makes it so users can filter the search listing by creator.
181 - **SearchKit - enable tags for Saved Searches
182 ([21376](https://github.com/civicrm/civicrm-core/pull/21376))**
184 Enables tags for saved searches in searchkit.
186 - **SearchKit - Add 'array' option to download API and add test
187 ([21363](https://github.com/civicrm/civicrm-core/pull/21363))**
189 Adds a new option to the SearchKit "Download" api to return a normal array
190 result, which makes testing easier.
192 - **SearchKit - Sortable column fixes/improvements
193 ([21720](https://github.com/civicrm/civicrm-core/pull/21720) and
194 [21894](https://github.com/civicrm/civicrm-core/pull/21894))**
196 Fixes sortable column headers on SearchKit admin tables and makes
197 click-sortable column headers configurable.
199 - **Add message admin to dist
200 ([21670](https://github.com/civicrm/civicrm-core/pull/21670))**
202 Adds Message admin extension.
204 - **message_admin - Add titles/hints to hyperlinks
205 ([21698](https://github.com/civicrm/civicrm-core/pull/21698))**
207 Adds help text to links on Message Admin Screen.
209 - **Replace expensive query with cheaper one
210 ([21426](https://github.com/civicrm/civicrm-core/pull/21426))**
212 Improves performance.
214 - **Add support for CiviCRM date formats in crmDate
215 ([21508](https://github.com/civicrm/civicrm-core/pull/21508))**
217 Adds support for CiviCRM date formats in crmDate.
219 - **Mailing Unsubscribe Form: Show if email is already unsubscribed
220 ([21174](https://github.com/civicrm/civicrm-core/pull/21174))**
222 Improves languaging on the Mailing Unsubscribe form regarding if the email is
223 already unsubscribed.
225 - **Change Do Not SMS privacy icon
226 ([dev/core#2754](https://lab.civicrm.org/dev/core/-/issues/2754):
227 [21354](https://github.com/civicrm/civicrm-core/pull/21354))**
229 Improves usability by improving the Do Not SMS icon.
233 - **Add workflow template for 'recurring edit' workflow
234 ([21356](https://github.com/civicrm/civicrm-core/pull/21356) and
235 [21826](https://github.com/civicrm/civicrm-core/pull/21826))**
237 Adds workflow template for 'recurring edit' workflow
239 - **Can we re-order the 'recur links'
240 ([dev/core#2843](https://lab.civicrm.org/dev/core/-/issues/2843):
241 [21529](https://github.com/civicrm/civicrm-core/pull/21529))**
243 Improves user experience by reordering the contribution recur links.
245 - **View Contribution page, move the Done button to the last button, currently
247 ([21547](https://github.com/civicrm/civicrm-core/pull/21547))**
249 Reorders buttons on the Contribution page to improve user experience.
251 - **Replace "Print Invoice" and "Print Invoice and Credit Note" buttons with
252 label "Download Invoice" and "Download Invoice and Credit Note"
253 ([21546](https://github.com/civicrm/civicrm-core/pull/21546))**
255 Improves labels for Invoice buttons.
259 - **Custom Participant tokens not working in scheduled reminders
260 ([dev/core#348](https://lab.civicrm.org/dev/core/-/issues/348):
261 [21666](https://github.com/civicrm/civicrm-core/pull/21666))**
263 Adds support for participant tokens in scheduled reminders.
267 - **CRM-19236 - Fix Flexmailer extension to support unicode urls
268 ([21597](https://github.com/civicrm/civicrm-core/pull/21597))**
270 Updates flexmailer click tracking to support unicode urls.
272 - **Install flexmailer by default on new installs
273 ([dev/core#2836](https://lab.civicrm.org/dev/core/-/issues/2836):
274 [21522](https://github.com/civicrm/civicrm-core/pull/21522) and
275 [21830](https://github.com/civicrm/civicrm-core/pull/21830))**
277 Installs flexmailer on new installs by default.
281 - **Fix code to use Order api to create Memberships in core forms (Work Towards
282 [dev/core#2717](https://lab.civicrm.org/dev/core/-/issues/2717):
283 [21152](https://github.com/civicrm/civicrm-core/pull/21152))**
285 Use order api for new membership create in batch.
287 ### WordPress integration
289 - **Add deduping to Quick Add Dashboard Widget
290 ([256](https://github.com/civicrm/civicrm-wordpress/pull/256))**
292 Adds a simple deduplication check when submitting details via the "Quick Add
293 Contact to CiviCRM" Dashboard Widget.
295 ## <a name="bugs"></a>Bugs resolved
299 - **Full Month Names: avoid relying on the operating system's locale for
301 ([dev/translation#71](https://lab.civicrm.org/dev/translation/-/issues/71):
302 [21157](https://github.com/civicrm/civicrm-core/pull/21157))**
304 - **CRM_Utils_Date - Month and day names should match active locale
305 ([21569](https://github.com/civicrm/civicrm-core/pull/21569))**
307 - **System Workflow Messages - Improve localization experience (Work Towards
308 [dev/mail#83](https://lab.civicrm.org/dev/mail/-/issues/83):
309 [21773](https://github.com/civicrm/civicrm-core/pull/21773),
310 [21747](https://github.com/civicrm/civicrm-core/pull/21747),
311 [21774](https://github.com/civicrm/civicrm-core/pull/21774),
312 [21772](https://github.com/civicrm/civicrm-core/pull/21772),
313 [21590](https://github.com/civicrm/civicrm-core/pull/21590),
314 [21338](https://github.com/civicrm/civicrm-core/pull/21338),
315 [21480](https://github.com/civicrm/civicrm-core/pull/21480) and
316 [21486](https://github.com/civicrm/civicrm-core/pull/21486))**
318 - **When extensions do upgrades and add fields to tables, trigger-based logging
319 tables require the extension to do the right thing
320 ([dev/core#1618](https://lab.civicrm.org/dev/core/-/issues/1618):
321 [21135](https://github.com/civicrm/civicrm-core/pull/21135))**
323 - **Special characters become "?" On PDF report
324 ([dev/core#2126](https://lab.civicrm.org/dev/core/-/issues/2126):
325 [21423](https://github.com/civicrm/civicrm-core/pull/21423))**
327 - **Send an Email / Cancel button does not work
328 ([dev/core#2318](https://lab.civicrm.org/dev/core/-/issues/2318):
329 [21474](https://github.com/civicrm/civicrm-core/pull/21474))**
331 - **hook_civicrm_tokenValues inconsistent data
332 ([dev/core#2554](https://lab.civicrm.org/dev/core/-/issues/2554):
333 [21490](https://github.com/civicrm/civicrm-core/pull/21490))**
335 Remove code to assign contact to the template in sendEmail.
337 - **Use consistent token syntax for pseudoconstants
338 ([dev/core#2650](https://lab.civicrm.org/dev/core/-/issues/2650):
339 [21477](https://github.com/civicrm/civicrm-core/pull/21477),
340 [21464](https://github.com/civicrm/civicrm-core/pull/21464),
341 [21570](https://github.com/civicrm/civicrm-core/pull/21570) and
342 [21705](https://github.com/civicrm/civicrm-core/pull/21705))**
344 - **Remove unused token assigns (Work Towards
345 [dev/core#2748](https://lab.civicrm.org/dev/core/-/issues/2748):
346 [21059](https://github.com/civicrm/civicrm-core/pull/21059))**
348 Removes some no-longer-used token assigns & adds an upgrade message in case
349 people have templates still referring to them.
351 - **Something something tokens something tokens
352 ([dev/core#2856](https://lab.civicrm.org/dev/core/-/issues/2856):
353 [21580](https://github.com/civicrm/civicrm-core/pull/21580))**
355 Token "filter" can be null so filter[0] doesn't exist.
357 - **Fix contact tokens class to load using apiv4
358 ([21780](https://github.com/civicrm/civicrm-core/pull/21780))**
360 - **Remove case token listing from contact email task
361 ([21787](https://github.com/civicrm/civicrm-core/pull/21787))**
363 - **Fix another instance of double token rendering
364 ([21788](https://github.com/civicrm/civicrm-core/pull/21788))**
366 - **Fix token regression - re-add support for empty tokens
367 ([21756](https://github.com/civicrm/civicrm-core/pull/21756))**
369 - **Fix event custom field tokens in scheduled reminders
370 ([21374](https://github.com/civicrm/civicrm-core/pull/21374))**
372 - **Reference token metadata internally fix custom tokens label bug
373 ([21767](https://github.com/civicrm/civicrm-core/pull/21767))**
375 - **Participant tokens - remove / replace unsupportable from badges (conversion
376 preparation) ([21520](https://github.com/civicrm/civicrm-core/pull/21520))**
378 - **Fix activity tokens
379 ([21489](https://github.com/civicrm/civicrm-core/pull/21489))**
381 - **Ensure TokenSmary::render returns an array
382 ([21461](https://github.com/civicrm/civicrm-core/pull/21461))**
384 - **Replace event type token in action schedule changes event.event_type_id to
385 participant.event_type_id:label
386 ([dev/core#2892](https://lab.civicrm.org/dev/core/-/issues/2892):
387 [21738](https://github.com/civicrm/civicrm-core/pull/21738))**
389 - **Custom field multiselect of type int crashes when saving
390 ([dev/core#2772](https://lab.civicrm.org/dev/core/-/issues/2772):
391 [21186](https://github.com/civicrm/civicrm-core/pull/21186))**
393 - **Deduping produces bad results after a rule change
394 ([dev/core#2820](https://lab.civicrm.org/dev/core/-/issues/2820):
395 [21509](https://github.com/civicrm/civicrm-core/pull/21509))**
397 - **[REF] Extend 'managed' api to provide information about 'status' (Clean up
398 towards [dev/core#2823](https://lab.civicrm.org/dev/core/-/issues/2823):
399 [21399](https://github.com/civicrm/civicrm-core/pull/21399),
400 [21440](https://github.com/civicrm/civicrm-core/pull/21440),
401 [21400](https://github.com/civicrm/civicrm-core/pull/21400),
402 [21401](https://github.com/civicrm/civicrm-core/pull/21401),
403 [21412](https://github.com/civicrm/civicrm-core/pull/21412) and
404 [21395](https://github.com/civicrm/civicrm-core/pull/21395))**
406 - **Dashboard error `Trying to access array offset on value of type null`
407 ([dev/core#2829](https://lab.civicrm.org/dev/core/-/issues/2829):
408 [21441](https://github.com/civicrm/civicrm-core/pull/21441) and
409 [21437](https://github.com/civicrm/civicrm-core/pull/21437))**
411 - **Upgrade error - upgrading to 5.43
412 ([dev/core#2870](https://lab.civicrm.org/dev/core/-/issues/2870):
413 [21640](https://github.com/civicrm/civicrm-core/pull/21640))**
415 Fix upgrade error with rpow installed.
417 - **Search Builder: Fails validation when state_province location type is
418 "primary" and operator is "IN"
419 ([dev/core#2874](https://lab.civicrm.org/dev/core/-/issues/2874):
420 [21646](https://github.com/civicrm/civicrm-core/pull/21646))**
422 - **APIv3 "replace" action is broken when there is > 25 records to replace.
423 ([dev/core#2881](https://lab.civicrm.org/dev/core/-/issues/2881):
424 [21681](https://github.com/civicrm/civicrm-core/pull/21681))**
426 - **Add contacts to Group action missing custom fields
427 ([dev/core#2885](https://lab.civicrm.org/dev/core/-/issues/2885):
428 [21716](https://github.com/civicrm/civicrm-core/pull/21716))**
430 - **Find Activities + Send Email task always says the contact is on hold or
431 deceased etc ([dev/core#2901](https://lab.civicrm.org/dev/core/-/issues/2901):
432 [21781](https://github.com/civicrm/civicrm-core/pull/21781))**
434 - **Afform - Fix chainSelect to work with anonymous users
435 ([21759](https://github.com/civicrm/civicrm-core/pull/21759))**
437 - **Afform - Fix chain-select of country and address to work on SearchKit forms
438 ([21749](https://github.com/civicrm/civicrm-core/pull/21749))**
440 - **Afform - gracefully handle missing html files
441 ([21436](https://github.com/civicrm/civicrm-core/pull/21436))**
443 - **Afform - fix loading embedded blocks
444 ([21609](https://github.com/civicrm/civicrm-core/pull/21609))**
446 - **Afform - ensure default value data type matches input type
447 ([21643](https://github.com/civicrm/civicrm-core/pull/21643))**
449 - **api4 explorer - entity displays as `\undefined` in the generated code sample
450 ([dev/core#2867](https://lab.civicrm.org/dev/core/-/issues/2867):
451 [21634](https://github.com/civicrm/civicrm-core/pull/21634))**
453 - **APIv4 - Default select clause to exclude "Extra" fields
454 ([21438](https://github.com/civicrm/civicrm-core/pull/21438))**
456 - **APIv4 - Give every SQL expression a title
457 ([21691](https://github.com/civicrm/civicrm-core/pull/21691))**
459 - **APIv4 - Automatically coalesce potentially null field values in equations
460 ([21647](https://github.com/civicrm/civicrm-core/pull/21647))**
462 - **UX: Deleting a saved Search Kit search should warn/delete associated afforms
463 ([dev/core#2824](https://lab.civicrm.org/dev/core/-/issues/2824):
464 [21457](https://github.com/civicrm/civicrm-core/pull/21457))**
466 - **search kit: deleting a search has weird confirmation dialog box
467 ([dev/core#2826](https://lab.civicrm.org/dev/core/-/issues/2826):
468 [21404](https://github.com/civicrm/civicrm-core/pull/21404))**
470 - **New download spreadsheet search kit feature broken
471 ([dev/core#2888](https://lab.civicrm.org/dev/core/-/issues/2888):
472 [21724](https://github.com/civicrm/civicrm-core/pull/21724))**
474 - **SearchKit - Style buttons for compatability with Shoreditch theme
475 ([21627](https://github.com/civicrm/civicrm-core/pull/21627))**
477 - **SearchKit - tweak button styles for shorditch
478 ([21726](https://github.com/civicrm/civicrm-core/pull/21726))**
480 Tweaks the "Tags" and "Add" buttons in SearchKit to look better in Shoreditch,
481 and tidies up some ts() calls.
483 - **SearchKit - A random stable genius
484 ([21586](https://github.com/civicrm/civicrm-core/pull/21586))**
486 Allows the pager, edit-in-place, and bulk updates to work properly with random
489 - **SearchKit - Exclude custom fields from ON clause selector
490 ([21495](https://github.com/civicrm/civicrm-core/pull/21495))**
492 Custom fields cannot as-yet be added to an ON clause in APIv4 because they do
493 not belong to the tables being joined. This removes the tripping hazard from
494 the UI, by making custom fields unavailable to select in an ON clause.
496 - **SearchKit - Fix links to non-aggregage join fields
497 ([21482](https://github.com/civicrm/civicrm-core/pull/21482))**
499 - **SearchKit - Fix display of links in aggregated columns
500 ([21420](https://github.com/civicrm/civicrm-core/pull/21420))**
502 - **SearchKit - Fix alignment in table headers
503 ([21431](https://github.com/civicrm/civicrm-core/pull/21431))**
505 - **SearchKit - Correctly process filters passed through Afform from js
506 ([21485](https://github.com/civicrm/civicrm-core/pull/21485))**
508 - **SearchKit - Prevent race conditions in search display loading
509 ([21394](https://github.com/civicrm/civicrm-core/pull/21394))**
511 - **[search kit] Semicolon vs comma
512 ([21406](https://github.com/civicrm/civicrm-core/pull/21406))**
514 - **message_admin Style fixes
515 ([21712](https://github.com/civicrm/civicrm-core/pull/21712))**
517 - **message_admin - Fix quirk when using "Create Draft"
518 ([21700](https://github.com/civicrm/civicrm-core/pull/21700))**
520 - **MessageTemplate API - Fix saving of templates with workflow_name sans
521 workflow_id ([21694](https://github.com/civicrm/civicrm-core/pull/21694))**
523 - **Find Activities Search, default search option for Activity Text is set to
524 "both" in the code, but should actually be set to 6 which is the value for
525 "both" ([21598](https://github.com/civicrm/civicrm-core/pull/21598))**
527 - **UFMatch - E_NOTICE when nonexistent uf_id
528 ([21576](https://github.com/civicrm/civicrm-core/pull/21576))**
530 - **flushCaches should respect permitCacheFlushMode. Also flush caches which
531 have a NULL cache_date
532 ([21430](https://github.com/civicrm/civicrm-core/pull/21430))**
534 - **Setting::getItem - use deprecatedWarning instead of just logging
535 ([21625](https://github.com/civicrm/civicrm-core/pull/21625))**
537 - **Fix display of subscription frequency on 'Update Subscription' form
538 ([21469](https://github.com/civicrm/civicrm-core/pull/21469))**
540 - **Fix bug where log hook is ignored on custom field create
541 ([21557](https://github.com/civicrm/civicrm-core/pull/21557))**
543 - **Set default for civicrm_message_template.is_reserved
544 ([21651](https://github.com/civicrm/civicrm-core/pull/21651))**
546 - **CiviReport - avoid error in test environments when using built-in php web
547 server ([21560](https://github.com/civicrm/civicrm-core/pull/21560))**
549 - **Update SelfSvcUpdate.php
550 ([21679](https://github.com/civicrm/civicrm-core/pull/21679))**
552 Changes "cancel" text to read "cancel registration".
554 - **Import csv-Fix not importing extension in phones
555 ([20995](https://github.com/civicrm/civicrm-core/pull/20995))**
557 - **Missed message template updates from 5.39/5.40
558 ([21550](https://github.com/civicrm/civicrm-core/pull/21550))**
560 - **Don't clear the GroupContactCache until we're ready to insert the new
561 version ([21384](https://github.com/civicrm/civicrm-core/pull/21384))**
563 - **Fix syntax error on a ts() function call
564 ([21518](https://github.com/civicrm/civicrm-core/pull/21518))**
566 - **flushCaches should respect permitCacheFlushMode
567 ([21468](https://github.com/civicrm/civicrm-core/pull/21468))**
569 - **Smarty warning about missing contact subtype on New Individual
570 ([21410](https://github.com/civicrm/civicrm-core/pull/21410))**
572 - **Fix Upgrade step to ensure all fields are converted correctly as well
573 ([21396](https://github.com/civicrm/civicrm-core/pull/21396))**
575 - **Don't specify character set for civicrm_relationship_cache table
576 ([21382](https://github.com/civicrm/civicrm-core/pull/21382))**
578 - **Error about count() on New Email
579 ([21714](https://github.com/civicrm/civicrm-core/pull/21714))**
581 - **Fix generating civicrm.settings.php by ensuring that CMSdbSSL and dbSSL
582 variables are properly removed from the DSNs
583 ([63](https://github.com/civicrm/civicrm-joomla/pull/63))**
585 - **Smarty notices on Find Activities results page
586 ([21422](https://github.com/civicrm/civicrm-core/pull/21422))**
588 - **Smarty notice on Find Activities / Find Cases
589 ([21421](https://github.com/civicrm/civicrm-core/pull/21421))**
592 ([21503](https://github.com/civicrm/civicrm-core/pull/21503))**
594 - **Fix extra apostrophe added in 21636
595 ([21650](https://github.com/civicrm/civicrm-core/pull/21650))**
597 - **avoid back trace when importing preferred communication method
598 ([21433](https://github.com/civicrm/civicrm-core/pull/21433))**
600 - **Fixed issue with sending from do-not-reply@domain address
601 ([21455](https://github.com/civicrm/civicrm-core/pull/21455))**
603 - **Find Activities Search, the default search option of "With" criteria
604 excludes Activities by default. Confuses End Users when 0 results are returned
605 when criteria appears to be correct.
606 ([21595](https://github.com/civicrm/civicrm-core/pull/21595))**
608 - **Do not send email notification to the user if `notify` is not set in the
609 params ([21562](https://github.com/civicrm/civicrm-core/pull/21562))**
611 - **ensure blank note date in UI defaults to current date.
612 ([21717](https://github.com/civicrm/civicrm-core/pull/21717))**
614 - **System status checks only shows 25 messages
615 ([21748](https://github.com/civicrm/civicrm-core/pull/21748))**
618 ([21723](https://github.com/civicrm/civicrm-core/pull/21723))**
621 ([21689](https://github.com/civicrm/civicrm-core/pull/21689))**
624 ([21782](https://github.com/civicrm/civicrm-core/pull/21782))**
627 ([21732](https://github.com/civicrm/civicrm-core/pull/21732))**
630 ([21702](https://github.com/civicrm/civicrm-core/pull/21702))**
633 ([21655](https://github.com/civicrm/civicrm-core/pull/21655))**
636 ([21636](https://github.com/civicrm/civicrm-core/pull/21636))**
639 ([21631](https://github.com/civicrm/civicrm-core/pull/21631))**
642 ([21579](https://github.com/civicrm/civicrm-core/pull/21579))**
644 - **Fix header e-notices
645 ([21633](https://github.com/civicrm/civicrm-core/pull/21633))**
648 ([21658](https://github.com/civicrm/civicrm-core/pull/21658))**
651 ([21659](https://github.com/civicrm/civicrm-core/pull/21659))**
654 ([21632](https://github.com/civicrm/civicrm-core/pull/21632))**
656 - **enotice fixes in fatal error template
657 ([21639](https://github.com/civicrm/civicrm-core/pull/21639))**
660 ([21543](https://github.com/civicrm/civicrm-core/pull/21543))**
662 - **tpl enotice fixes on extensions page
663 ([21545](https://github.com/civicrm/civicrm-core/pull/21545))**
666 ([21544](https://github.com/civicrm/civicrm-core/pull/21544))**
668 - **Tpl enotice fixes
669 ([21542](https://github.com/civicrm/civicrm-core/pull/21542))**
671 - **Enotice fixes in tpls
672 ([21541](https://github.com/civicrm/civicrm-core/pull/21541))**
675 ([21711](https://github.com/civicrm/civicrm-core/pull/21711))**
677 - **Another enotice fix
678 ([21682](https://github.com/civicrm/civicrm-core/pull/21682))**
681 ([21683](https://github.com/civicrm/civicrm-core/pull/21683))**
683 - **Another one bites the dust
684 ([21684](https://github.com/civicrm/civicrm-core/pull/21684))**
686 - **Fix possibly undefined $form variables in smarty templates
687 ([21735](https://github.com/civicrm/civicrm-core/pull/21735))**
689 - **Fix regression from enotice fixes
690 ([21743](https://github.com/civicrm/civicrm-core/pull/21743))**
692 - **Count of sent messages can be wrong in status popup for email form
693 ([dev/core#2914](https://lab.civicrm.org/dev/core/-/issues/2914):
694 [21827](https://github.com/civicrm/civicrm-core/pull/21827))
696 - **[REF] Fix pseduoconstant token rendering for contributions via legacy way on
697 php8 and include campaign_id pseudoconsntants as well
698 ([21958](https://github.com/civicrm/civicrm-core/pull/21958))**
702 - **For latest iteration of case email form, don't fail when there's no To
703 contact ([21737](https://github.com/civicrm/civicrm-core/pull/21737))**
707 - **Fix PHP notices in contributionrecur tpl
708 ([21526](https://github.com/civicrm/civicrm-core/pull/21526))**
710 - **Follow up on removing contributeMode from templates
711 ([21417](https://github.com/civicrm/civicrm-core/pull/21417))**
713 - **Getting system status message about contributeMode after upgrade to 5.43
714 when it seems like it shouldn't
715 ([dev/core#2828](https://lab.civicrm.org/dev/core/-/issues/2828):
716 [21434](https://github.com/civicrm/civicrm-core/pull/21434))**
718 - **Participant Status: pending refund can have two conflicting meanings (Work
719 Towards [dev/core#2629](https://lab.civicrm.org/dev/core/-/issues/2629):
720 [21624](https://github.com/civicrm/civicrm-core/pull/21624))**
722 Only show contribution statuses on contribution form.
724 - **Money - create new Civi:: facade - now format helper (Work Towards:
725 [dev/core#2638](https://lab.civicrm.org/dev/core/-/issues/2638):
726 [21599](https://github.com/civicrm/civicrm-core/pull/21599))**
728 Adds a helper function for formatting.
730 - **CiviCRM 5.35.1, truncation of money values where $1,000 donation is recorded
731 as $1 which appears to be truncating at the thousand separator when using the
732 Australian (AU) and US Locale (Work Towards
733 [dev/core#2493](https://lab.civicrm.org/dev/core/-/issues/2493):
734 [21555](https://github.com/civicrm/civicrm-core/pull/21555))**
736 Ensures that any money fields retrieved by getSubmittedValue are in a machine
739 - **[regression-ish] When a recurring contribution template has no line items,
740 the contact contribution tab crashes
741 ([dev/financial#187](https://lab.civicrm.org/dev/financial/-/issues/187):
742 [21729](https://github.com/civicrm/civicrm-core/pull/21729))**
744 - **ContributionRecur modified_date should update to current_timestamp on update
745 ([21472](https://github.com/civicrm/civicrm-core/pull/21472))**
747 - **ensure recur options are present on backend cc contribution form.
748 ([21577](https://github.com/civicrm/civicrm-core/pull/21577))**
752 - **Flush metadata cache on event edit
753 ([21740](https://github.com/civicrm/civicrm-core/pull/21740))**
755 - **Fix Badge to use token processor
756 ([dev/core#2834](https://lab.civicrm.org/dev/core/-/issues/2834):
757 [21458](https://github.com/civicrm/civicrm-core/pull/21458) and
758 [21587](https://github.com/civicrm/civicrm-core/pull/21587))**
760 - **Event confirmation emails should go to the email submitted, not primary
761 email ([dev/event#64](https://lab.civicrm.org/dev/event/-/issues/64):
762 [21669](https://github.com/civicrm/civicrm-core/pull/21669))**
764 - **Fix label for participant role
765 ([21656](https://github.com/civicrm/civicrm-core/pull/21656))**
769 - **flexmailer - Update `[CiviMail Draft]` prefix to match BAO behavior
770 ([21715](https://github.com/civicrm/civicrm-core/pull/21715))**
772 - **update_email_resetdate job does not consider opt out on hold
773 ([dev/core#2850](https://lab.civicrm.org/dev/core/-/issues/2850):
774 [21564](https://github.com/civicrm/civicrm-core/pull/21564))**
776 - **Start phasing out 'preferred_mail_format' (Work Towards
777 [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
778 [21676](https://github.com/civicrm/civicrm-core/pull/21676))**
780 ### Drupal Integration
782 - **Contact Image uploaded from Drupal Webform doesn't render on Drupal View as
783 a thumbnail. ([dev/drupal#13](https://lab.civicrm.org/dev/drupal/issues/13):
784 [524](https://github.com/civicrm/civicrm-drupal/pull/524))**
786 - **Session erroneously getting set to NULL on Drupal user login
787 ([dev/drupal#163](https://lab.civicrm.org/dev/drupal/-/issues/163):
788 [21403](https://github.com/civicrm/civicrm-core/pull/21403))**
790 ### WordPress integration
792 - **Wordpress Profile User Creation Sign On (v2)
793 ([20807](https://github.com/civicrm/civicrm-core/pull/20807))**
795 Ensures user is logged in on profile submission.
797 ## <a name="misc"></a>Miscellany
799 - **MessageTemplate - Deprecate `valueName`. Emphasize `workflow`. Consolidate
800 converters. ([21657](https://github.com/civicrm/civicrm-core/pull/21657))**
802 - **Bump minimum upgradable version to 4.5.9
803 ([21408](https://github.com/civicrm/civicrm-core/pull/21408))**
805 - **Use Case form for case email action
806 ([21688](https://github.com/civicrm/civicrm-core/pull/21688))**
808 - **Consolidate building of contact token list
809 ([21429](https://github.com/civicrm/civicrm-core/pull/21429),
810 [21761](https://github.com/civicrm/civicrm-core/pull/21761), and
811 [dev/core#2907](https://lab.civicrm.org/dev/core/-/issues/2907):
812 [21812](https://github.com/civicrm/civicrm-core/pull/21812))**
814 - **Remove call to legacy getTokenDetails
815 ([21786](https://github.com/civicrm/civicrm-core/pull/21786))**
817 - **Remove extraneous call to legacy token processing in sms task
818 ([21785](https://github.com/civicrm/civicrm-core/pull/21785))**
820 - **Remove stray token code
821 ([21763](https://github.com/civicrm/civicrm-core/pull/21763))**
823 - **Stop using `replaceContributionTokens` in core
824 ([dev/core#2851](https://lab.civicrm.org/dev/core/-/issues/2851):
825 [21525](https://github.com/civicrm/civicrm-core/pull/21525) and
826 [21565](https://github.com/civicrm/civicrm-core/pull/21565))**
828 - **Add SqlFunction support in addWhere
829 ([21301](https://github.com/civicrm/civicrm-core/pull/21301))**
831 - **Deprecate `replaceEntityTokens`, stop using in core
832 ([dev/core#2832](https://lab.civicrm.org/dev/core/-/issues/2832):
833 [21506](https://github.com/civicrm/civicrm-core/pull/21506),
834 [21521](https://github.com/civicrm/civicrm-core/pull/21521),
835 [21452](https://github.com/civicrm/civicrm-core/pull/21452) and
836 [21453](https://github.com/civicrm/civicrm-core/pull/21453))**
838 - **Deprecate `replaceCaseTokens` in core
839 ([dev/core#2817](https://lab.civicrm.org/dev/core/-/issues/2817):
840 [21380](https://github.com/civicrm/civicrm-core/pull/21380),
841 [21445](https://github.com/civicrm/civicrm-core/pull/21445),
842 [21383](https://github.com/civicrm/civicrm-core/pull/21383),
843 [21381](https://github.com/civicrm/civicrm-core/pull/21381),
844 [21447](https://github.com/civicrm/civicrm-core/pull/21447) and
845 [21475](https://github.com/civicrm/civicrm-core/pull/21475))**
847 - **Stop using replaceContactTokens in core (Work Towards
848 [dev/core#2814](https://lab.civicrm.org/dev/core/-/issues/2814):
849 [21365](https://github.com/civicrm/civicrm-core/pull/21365),
850 [21414](https://github.com/civicrm/civicrm-core/pull/21414),
851 [21364](https://github.com/civicrm/civicrm-core/pull/21364),
852 [21379](https://github.com/civicrm/civicrm-core/pull/21379),
853 [21377](https://github.com/civicrm/civicrm-core/pull/21377),
854 [21378](https://github.com/civicrm/civicrm-core/pull/21378),
855 [21568](https://github.com/civicrm/civicrm-core/pull/21568),
856 [21494](https://github.com/civicrm/civicrm-core/pull/21494),
857 [21367](https://github.com/civicrm/civicrm-core/pull/21367) and
858 [21449](https://github.com/civicrm/civicrm-core/pull/21449))**
860 - **[REF] Cleanup pdf classes to use a trait like we do for email classes
861 ([dev/core#2790](https://lab.civicrm.org/dev/core/-/issues/2790):
862 [21478](https://github.com/civicrm/civicrm-core/pull/21478),
863 [21479](https://github.com/civicrm/civicrm-core/pull/21479),
864 [21366](https://github.com/civicrm/civicrm-core/pull/21366),
865 [21359](https://github.com/civicrm/civicrm-core/pull/21359) and
866 [21335](https://github.com/civicrm/civicrm-core/pull/21335))**
868 - **Afform - Add getters/setters to the AfformSubmitEvent class
869 ([21572](https://github.com/civicrm/civicrm-core/pull/21572))**
871 - **Api v4 contact delete bug (Cleanup Towards
872 [dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
873 [21210](https://github.com/civicrm/civicrm-core/pull/21210),
874 [21198](https://github.com/civicrm/civicrm-core/pull/21198),
875 [21211](https://github.com/civicrm/civicrm-core/pull/21211) and
876 [21199](https://github.com/civicrm/civicrm-core/pull/21199))**
878 - **[REF] Separate repeattransaction from completeorder function - only call the
879 latter from payment.create
880 (Cleanup Towards [dev/core#2716](https://lab.civicrm.org/dev/core/-/issues/2716):
881 [20856](https://github.com/civicrm/civicrm-core/pull/20856))**
883 - **Financial record processing - extract to new class to faciliate cleanup
884 (Work Towards [dev/core#2715](https://lab.civicrm.org/dev/core/-/issues/2715):
885 [20985](https://github.com/civicrm/civicrm-core/pull/20985) and
886 [21370](https://github.com/civicrm/civicrm-core/pull/21370))**
888 - **Add unique class to price field template
889 ([21484](https://github.com/civicrm/civicrm-core/pull/21484))**
891 - **Clean up UpdateBilling/UpdateSubscription/ContributionRecur to use getters
892 ([21538](https://github.com/civicrm/civicrm-core/pull/21538))**
894 - **[REF] Fix form to call this->setTitle()
895 ([21362](https://github.com/civicrm/civicrm-core/pull/21362))**
897 - **Update use of CRM_Utils_System::setTitle() for legacycustomsearches
898 ([21375](https://github.com/civicrm/civicrm-core/pull/21375))**
900 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
901 part 2 ([21202](https://github.com/civicrm/civicrm-core/pull/21202))**
903 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
904 part 3 ([21352](https://github.com/civicrm/civicrm-core/pull/21352))**
906 - **Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle()
907 part 4 ([21368](https://github.com/civicrm/civicrm-core/pull/21368))**
909 - **Simplify getRecurFromAddress
910 ([21613](https://github.com/civicrm/civicrm-core/pull/21613))**
912 - **Return another function to the email trait
913 ([21677](https://github.com/civicrm/civicrm-core/pull/21677))**
915 - **Rename test clas to reflect tested class name
916 ([21686](https://github.com/civicrm/civicrm-core/pull/21686))**
918 - **Remove unused function - convertDateFieldsToMySQL
919 ([21617](https://github.com/civicrm/civicrm-core/pull/21617))**
921 - **Remove all references to safe_mode, DEPRECATED as of PHP 5.3.0 and REMOVED
923 ([21594](https://github.com/civicrm/civicrm-core/pull/21594))**
925 - **Remove duplicate global declaration in civicrm.settings.php template
926 ([21409](https://github.com/civicrm/civicrm-core/pull/21409))**
928 - **Remove broken code
929 ([21602](https://github.com/civicrm/civicrm-core/pull/21602))**
931 - **Remove call to the dreaded replaceMultipleContributionTokens
932 ([21652](https://github.com/civicrm/civicrm-core/pull/21652))**
934 - **Remove handling for empty required field
935 ([21623](https://github.com/civicrm/civicrm-core/pull/21623))**
937 - **Remove error handling for core error being returned
938 ([21425](https://github.com/civicrm/civicrm-core/pull/21425))**
940 - **Remove over-copied function
941 ([21641](https://github.com/civicrm/civicrm-core/pull/21641))**
943 - **Remove unused paramter
944 ([21685](https://github.com/civicrm/civicrm-core/pull/21685))**
946 - **Remove deprecated code lines
947 ([21566](https://github.com/civicrm/civicrm-core/pull/21566))**
949 - **Remove workflow_id reference
950 ([21671](https://github.com/civicrm/civicrm-core/pull/21671))**
952 - **Remove now-silly function
953 ([21680](https://github.com/civicrm/civicrm-core/pull/21680))**
956 ([21497](https://github.com/civicrm/civicrm-core/pull/21497))**
958 - **Remove requirement to enter email address on Opt Out
959 ([21350](https://github.com/civicrm/civicrm-core/pull/21350))**
961 - **Remove requirement to enter email address on unsubscribe
962 ([21175](https://github.com/civicrm/civicrm-core/pull/21175))**
964 - **Remove deprecated input variable
965 ([21372](https://github.com/civicrm/civicrm-core/pull/21372))**
967 - **Remove unused private function
968 ([21371](https://github.com/civicrm/civicrm-core/pull/21371))**
970 - **Remove deprecated function
971 ([21361](https://github.com/civicrm/civicrm-core/pull/21361))**
973 - **Remove testing hack
974 ([21360](https://github.com/civicrm/civicrm-core/pull/21360))**
976 - **Remove deprecated function
977 ([21358](https://github.com/civicrm/civicrm-core/pull/21358))**
979 - **Removes duplicate replace on event fee amount.
980 ([21739](https://github.com/civicrm/civicrm-core/pull/21739))**
982 - **Remove function duplicated in error
983 ([21758](https://github.com/civicrm/civicrm-core/pull/21758))**
985 - **Remove now-obsolete getPseudoTokens
986 ([21760](https://github.com/civicrm/civicrm-core/pull/21760))**
988 - **APIv4 - Minor code cleanup to improve efficiency in
989 CreateApi4RequestSubscriber
990 ([21775](https://github.com/civicrm/civicrm-core/pull/21775))**
992 - **Function cleanup following move to non-static function
993 ([21693](https://github.com/civicrm/civicrm-core/pull/21693))**
995 - **[REF] Extract getRedirectUrl method
996 ([21687](https://github.com/civicrm/civicrm-core/pull/21687))**
998 - **[REF] Copy another email trait function back to the trait
999 ([21648](https://github.com/civicrm/civicrm-core/pull/21648))**
1001 - **REF - Remove non-functional code from APIv3
1002 ([21727](https://github.com/civicrm/civicrm-core/pull/21727))**
1004 - **[REF] Do not set input['line_item'] pointlessly
1005 ([21311](https://github.com/civicrm/civicrm-core/pull/21311))**
1007 - **[REF] Use getSubmittedValue rather than passed values
1008 ([21668](https://github.com/civicrm/civicrm-core/pull/21668))**
1010 - **(REF) MessageTemplate - Reverse renderTemplate()<=>sendTemplate() call
1011 ([21610](https://github.com/civicrm/civicrm-core/pull/21610))**
1013 - **[REF] Separate contact tokens from 'tokenCompatSubscriber'
1014 ([21626](https://github.com/civicrm/civicrm-core/pull/21626))**
1016 - **[Ref] Function signature cleanup
1017 ([21618](https://github.com/civicrm/civicrm-core/pull/21618))**
1019 - **[REF] Return the sendEmail function to it's owner
1020 ([21608](https://github.com/civicrm/civicrm-core/pull/21608))**
1022 - **[REF] Remove illusion of looping
1023 ([21554](https://github.com/civicrm/civicrm-core/pull/21554))**
1025 - **[Ref] Extend email trait test, process more sanely
1026 ([21553](https://github.com/civicrm/civicrm-core/pull/21553))**
1028 - **[REF] Extract domain tokens to their own class
1029 ([21510](https://github.com/civicrm/civicrm-core/pull/21510))**
1031 - **[REF] add test & static array to participant values tokens
1032 ([21476](https://github.com/civicrm/civicrm-core/pull/21476))**
1034 - **[REF] simplify member_tokens
1035 ([21481](https://github.com/civicrm/civicrm-core/pull/21481))**
1037 - **[Ref] Cleanup on SelectValues::contributeTokens
1038 ([21465](https://github.com/civicrm/civicrm-core/pull/21465))**
1040 - **[Ref] Remove pass-by-reference
1041 ([21466](https://github.com/civicrm/civicrm-core/pull/21466))**
1043 - **[Ref] Remove unnecessary pass-by-reference
1044 ([21463](https://github.com/civicrm/civicrm-core/pull/21463))**
1046 - **[REF] Use OO when determining what to suggest for settings.php prefixes for
1047 drupal/backdrop views, instead of scattered "if cms =="
1048 ([21042](https://github.com/civicrm/civicrm-core/pull/21042))**
1050 - **[REF] Remove unused parameter
1051 ([21448](https://github.com/civicrm/civicrm-core/pull/21448))**
1053 - **[REF] Remove unused variable
1054 ([21451](https://github.com/civicrm/civicrm-core/pull/21451))**
1056 - **[REF] Extract code to load the contact in tokenCompat
1057 ([21450](https://github.com/civicrm/civicrm-core/pull/21450))**
1059 - **[REF] Extract function to getDomainTokens
1060 ([21416](https://github.com/civicrm/civicrm-core/pull/21416))**
1062 - **[REF] Remove cruft
1063 ([21418](https://github.com/civicrm/civicrm-core/pull/21418))**
1065 - **[REF] Extract code to get the from address for a recurring contribution.
1066 ([21357](https://github.com/civicrm/civicrm-core/pull/21357))**
1068 - **[Ref] Remove no-longer-used variables
1069 ([21459](https://github.com/civicrm/civicrm-core/pull/21459))**
1071 - **[REF] Update Frequenecy template assignments in UpdateBilling to be
1072 consistent with #21469
1073 ([21635](https://github.com/civicrm/civicrm-core/pull/21635))**
1075 - **[REF] Update Product Create to use hooks and also switch the manage
1076 product/premium page to use APIv4 Product Entity
1077 ([20822](https://github.com/civicrm/civicrm-core/pull/20822))**
1079 - **[REF] Add in upgrade step to align the relationship cache table collation
1080 and charset with the other tables
1081 ([21389](https://github.com/civicrm/civicrm-core/pull/21389))**
1083 - **[REF] stop passing form into createActivities
1084 ([21653](https://github.com/civicrm/civicrm-core/pull/21653))**
1086 - **[REF] Extract function for re-use
1087 ([21778](https://github.com/civicrm/civicrm-core/pull/21778))**
1089 - **[REF] Move getCustomFieldTokens to the tokens class, annotate more
1090 deprecations ([21660](https://github.com/civicrm/civicrm-core/pull/21660))**
1092 - **Update contributors for Third Sector Design
1093 ([21516](https://github.com/civicrm/civicrm-core/pull/21516))**
1095 - **[NFC/Unit test] - Fix test fail on php 7.4
1096 CRM_Core_BAO_MessageTemplateTest::testCaseActivityCopyTemplate
1097 ([21443](https://github.com/civicrm/civicrm-core/pull/21443))**
1099 - **[NFC/Unit Test] Remove wombats and bananas from
1100 sites/default/files/civicrm/custom
1101 ([21768](https://github.com/civicrm/civicrm-core/pull/21768))**
1103 - **[NFC/Unit test] - Fix secondary issue with case token consistency test
1104 ([21369](https://github.com/civicrm/civicrm-core/pull/21369))**
1106 - **Authx: README: add note about CMS permissions
1107 ([21439](https://github.com/civicrm/civicrm-core/pull/21439))**
1109 - **[NFC] Add test for new case email url
1110 ([21766](https://github.com/civicrm/civicrm-core/pull/21766))**
1112 - **[NFC] Afform - Add array shape annotations to FormDataModel
1113 ([21765](https://github.com/civicrm/civicrm-core/pull/21765))**
1115 - **[NFC] Unit test fixes for the problem of quickform rules going missing
1116 ([21725](https://github.com/civicrm/civicrm-core/pull/21725))**
1118 - **NFC - Update code comments
1119 ([21675](https://github.com/civicrm/civicrm-core/pull/21675))**
1121 - **[NFC] Unit test for file-on-case
1122 ([21678](https://github.com/civicrm/civicrm-core/pull/21678))**
1124 - **[NFC] [test] minor cleanup in test
1125 ([21498](https://github.com/civicrm/civicrm-core/pull/21498))**
1127 - **[NFC] Fix Fatal error on php 8 due to mis matched function declaration
1128 ([21487](https://github.com/civicrm/civicrm-core/pull/21487))**
1130 - **[NFC] Put back email test without tokens and enhance a little
1131 ([21398](https://github.com/civicrm/civicrm-core/pull/21398))**
1133 - **[NFC] Extend send email test to cover for contact tokens being replaced
1134 ([21386](https://github.com/civicrm/civicrm-core/pull/21386))**
1136 - **[NFC] Add in type hints to template upgrade functions
1137 ([21390](https://github.com/civicrm/civicrm-core/pull/21390))**
1139 - **NFC Clarify description for ckeditor4 plugin
1140 ([21349](https://github.com/civicrm/civicrm-core/pull/21349))**
1142 - **Improve test readability, use schema labels for membership tokens
1143 ([21708](https://github.com/civicrm/civicrm-core/pull/21708))**
1145 - **Add test to cancel subscription form
1146 ([21588](https://github.com/civicrm/civicrm-core/pull/21588))**
1148 - **Fix test to test trait not deprecated function
1149 ([21373](https://github.com/civicrm/civicrm-core/pull/21373))**
1152 ([21585](https://github.com/civicrm/civicrm-core/pull/21585))**
1154 - **Tests - update to use postProcess
1155 ([21637](https://github.com/civicrm/civicrm-core/pull/21637))**
1157 - **Basic IDE cleanup on test class
1158 ([21661](https://github.com/civicrm/civicrm-core/pull/21661))**
1161 ([21662](https://github.com/civicrm/civicrm-core/pull/21662))**
1163 - **tests/events/*.php - Enforce general compliance with hook/event signatures
1164 ([21615](https://github.com/civicrm/civicrm-core/pull/21615))**
1166 - **HttpTestTrait - Allow one to easily authenticate subrequests
1167 ([21261](https://github.com/civicrm/civicrm-core/pull/21261))**
1169 - **Test regression fix
1170 ([21649](https://github.com/civicrm/civicrm-core/pull/21649))**
1172 - **Test tearDown fixes
1173 ([21548](https://github.com/civicrm/civicrm-core/pull/21548))**
1175 - **Convert more tests to call postProcess
1176 ([21628](https://github.com/civicrm/civicrm-core/pull/21628))**
1178 - **Stop testing for gender_id output that was described as 'legacy' years ago
1179 ([21558](https://github.com/civicrm/civicrm-core/pull/21558))**
1182 ([21622](https://github.com/civicrm/civicrm-core/pull/21622))**
1184 - **Fix test to use postProcess
1185 ([21630](https://github.com/civicrm/civicrm-core/pull/21630))**
1187 - **Test cleanup -convert to use postProcess
1188 ([21629](https://github.com/civicrm/civicrm-core/pull/21629))**
1190 - **Add test and fix for API4 failing to decode strings stored as HTML
1191 ([21549](https://github.com/civicrm/civicrm-core/pull/21549))**
1193 - **Initial test on event tokens
1194 ([21563](https://github.com/civicrm/civicrm-core/pull/21563))**
1196 - **Cleanup on test tear downs
1197 ([21552](https://github.com/civicrm/civicrm-core/pull/21552))**
1199 - **Attempt to fix test site 500 errors on activity pdf
1200 ([21504](https://github.com/civicrm/civicrm-core/pull/21504))**
1202 - **(NFC) TokenConsistencyTest - Add some examples of HTML escaping
1203 ([21837](https://github.com/civicrm/civicrm-core/pull/21837))**
1205 - **[REF] Fix PDF Test failure on php versions 7.4 and later
1206 ([21866](https://github.com/civicrm/civicrm-core/pull/21866))**
1208 ## <a name="credits"></a>Credits
1210 This release was developed by the following code authors:
1212 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; Andy
1213 Burns; Benjamin W; Christian Wach; CiviCoop - Jaap Jansma; CiviCRM - Coleman
1214 Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy;
1215 Dave D; Digitalcourage - Detlev Sieber; Francesc Bassas i Bullich; Fuzion -
1216 Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; iXiam -
1217 Rubén Pineda; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth;
1218 Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology
1219 Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology
1220 Project - Jamie McClelland; Third Sector Design - Kurund Jalmi, Michael
1221 McAndrew, William Mortada; Valéry Gouleau; Wikimedia Foundation - Eileen
1224 Most authors also reviewed code for this release; in addition, the following
1225 reviewers contributed their comments:
1227 AGH Strategies - Eli Lisseck; Artful Robot - Rich Lott; Black Brick Software -
1228 David Hayes; CiviCRM - Josh Gowans; CiviDesk - Yashodha Chaku; CompuCorp - Omar
1229 Abu Hussein; Freeform Solutions - Herb van den Dool; Humanists UK - Andrew West;
1230 Lemniscus - Noah Miller; OPEN - dewy; Richard Baugh; Richard van Oosterhout;
1231 Semper IT - Karin Gerritsen; Skvare - Mark Hanna; Squiffle Consulting - Aidan
1232 Saunders; Tadpole Collective - Kevin Cristiano
1234 ## <a name="feedback"></a>Feedback
1236 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
1237 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1238 and contact `@agh1`.