5 - **[Synopsis](#synopsis)**
6 - **[Security advisories](#security)**
7 - **[Features](#features)**
8 - **[Bugs resolved](#bugs)**
9 - **[Miscellany](#misc)**
10 - **[Credits](#credits)**
11 - **[Feedback](#feedback)**
13 ## <a name="synopsis"></a>Synopsis
15 | *Does this version...?* | |
16 |:--------------------------------------------------------------- |:-------:|
17 | Fix security vulnerabilities? | no |
18 | **Change the database schema?** | **yes** |
19 | **Alter the API?** | **yes** |
20 | Require attention to configuration options? | no |
21 | **Fix problems installing or upgrading to a previous version?** | **yes** |
22 | **Introduce features?** | **yes** |
23 | **Fix bugs?** | **yes** |
25 ## <a name="features"></a>Features
29 - **Import validate related contacts in the same way as the main contact
30 ([23455](https://github.com/civicrm/civicrm-core/pull/23455))**
32 Improves validation of related contacts when importing by using the same
33 logic that is used for the main contact.
35 - **Import - make tracking fields import-specific
36 ([23692](https://github.com/civicrm/civicrm-core/pull/23692))**
38 Makes it so administrators can define the fields they track when importing.
40 - **Use UI Queue runner for import
41 ([23669](https://github.com/civicrm/civicrm-core/pull/23669) and
42 [23712](https://github.com/civicrm/civicrm-core/pull/23712))**
44 Improves Import experience by using UI Queue runner.
46 - **Civi::queue() - Add support for 'template' queues
47 ([23679](https://github.com/civicrm/civicrm-core/pull/23679))**
49 Adds support for creating template queues.
51 - **CRM_Queue_Task - Track an optional `$runAs` property
52 ([23743](https://github.com/civicrm/civicrm-core/pull/23743))**
54 Adds tracking for the Queue task `$runAs` property.
56 - **CRM_Queue_Runner - Add basic/skeletal support for `runAllInteractively()`
57 ([23746](https://github.com/civicrm/civicrm-core/pull/23746))**
59 Adds a third Queue Runner mechanism/helper `runAllInteractively`.
61 - **Queue - When UserJob has no more tasks, update status & fire hook
62 ([23711](https://github.com/civicrm/civicrm-core/pull/23711))**
64 Updates the queue status when all tasks in the queue have been completed.
66 - **Define more usable queue DX for multithreaded background work (Work Towards
67 [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
68 [22762](https://github.com/civicrm/civicrm-core/pull/22762) and
69 [23667](https://github.com/civicrm/civicrm-core/pull/23667))**
71 Defines 'status' and 'error' columns for `civicrm_queue` table and allows
72 background worker to drive tasks via APIv4.
74 - **Enable ability to require tags in profiles
75 ([23645](https://github.com/civicrm/civicrm-core/pull/23645))**
77 Enables the ability to make the Tag field required in a profile.
79 - **Add view link to user job monitoring page
80 ([23838](https://github.com/civicrm/civicrm-core/pull/23838))**
82 Improves user experience by adding a view link to the user job monitoring
85 - **Add upgrade for label to name conversion in `civicrm_mapping_field` for
86 multiple custom imports
87 ([23737](https://github.com/civicrm/civicrm-core/pull/23737))**
89 Improves import experience when importing custom fields that allow multiple
92 - **RelationshipCache - Set 'get' permissions
93 ([23684](https://github.com/civicrm/civicrm-core/pull/23684))**
95 Gives lesser-permissioned users access to the RelationshipCache entity, for
98 - **Make this error message more informative.
99 ([23599](https://github.com/civicrm/civicrm-core/pull/23599))**
101 Improves error message text.
103 - **Add Authx settings to navigation
104 ([23631](https://github.com/civicrm/civicrm-core/pull/23631))**
106 Adds Authx settings to the Navigation menu.
108 - **APIv4 - Filter custom fields based on supplied values
109 ([23489](https://github.com/civicrm/civicrm-core/pull/23489))**
111 Improves APIv4 metadata, allows targeted getfields for a particular entity or
114 - **APIv4 - Export options along with custom field
115 ([23452](https://github.com/civicrm/civicrm-core/pull/23452))**
117 Exports option groups and option values along with a custom field.
119 - **Search kit grand totals
120 ([23454](https://github.com/civicrm/civicrm-core/pull/23454))**
122 Adds a row to SearchKit table displays for grand totals, averages, counts and
123 other statistics. The aggregation method used can be configured per-column.
125 - **SearchKit - Default to simple pager when creating new table display
126 ([23436](https://github.com/civicrm/civicrm-core/pull/23436))**
128 Improves SearchKit user experience by defaulting to a simple pager.
130 - **SearchKit - add address proximity (map radius) search
131 ([23597](https://github.com/civicrm/civicrm-core/pull/23597))**
133 Allows searching for addresses within a given distance of a location in
136 - **SearchKit - Allow SearchSegments to be packaged as .mgd.php
137 ([23578](https://github.com/civicrm/civicrm-core/pull/23578))**
139 Allows SearchSegments to be packaged and distributed in extensions, along
140 with Saved Searches and Search Displays.
142 - **SearchKit - Make loading placeholders configurable
143 ([23702](https://github.com/civicrm/civicrm-core/pull/23702))**
145 Allows administrators to control how many (if any) skeleton results are shown
146 during ajax loading. It also lightens the colors to make the animation a bit
149 - **Search-kit - allow functions in the GROUP BY clause
150 ([dev/core#2485](https://lab.civicrm.org/dev/core/-/issues/2485):
151 [23434](https://github.com/civicrm/civicrm-core/pull/23434))**
153 Improves SearchKit so that one can have functions in the GROUP BY clause.
155 - **SearchKit - Default to search for individuals
156 ([23385](https://github.com/civicrm/civicrm-core/pull/23385))**
158 When clicking "+ New Search" in Search Kit, defaults to search for Individuals
159 instead of all contacts.
161 - **Make SearchKit available to non-admin users
162 ([dev/core#3457](https://lab.civicrm.org/dev/core/-/issues/3457):
163 [23670](https://github.com/civicrm/civicrm-core/pull/23670))**
165 Makes SearchKit available to non-admins by adding a new permission.
167 - **Dashboard - Efficiency tweak
168 ([23439](https://github.com/civicrm/civicrm-core/pull/23439))**
170 Improves the efficiency of the Dashboard.
172 - **Dashboard - Sort available dashlets alphabetically, add search box
173 ([23438](https://github.com/civicrm/civicrm-core/pull/23438))**
175 Improves user experience of the Dashboard by adding a search box and sorting
176 available dashlets alphabetically.
178 - **Dashboard - Show full title when hovering an inactive dashlet
179 ([23433](https://github.com/civicrm/civicrm-core/pull/23433))**
181 Improves user experience on the Dashboard by showing the full title when
182 hovering over an inactive dashlet.
184 - **Afform - support relationships
185 ([23296](https://github.com/civicrm/civicrm-core/pull/23296))**
187 Adds support for Relationships to Afform.
189 - **Afform - Add undo/redo buttons to the Admin UI
190 ([23648](https://github.com/civicrm/civicrm-core/pull/23648))**
192 Improves user experience of Afform by adding undo and redo buttons to the
195 - **Afform - Add 'administer afform' permission
196 ([23687](https://github.com/civicrm/civicrm-core/pull/23687))**
198 Adds a new permission to allow non-system-admins to access Form Builder
200 - **Afform - dispatch event when loading afforms
201 ([23488](https://github.com/civicrm/civicrm-core/pull/23488))**
203 Adds a hook-event which allows extensions to dynamically add Afforms.
207 - **Make CaseType usable in Afform & SearchKit
208 ([23640](https://github.com/civicrm/civicrm-core/pull/23640))**
210 Adds the `CaseType` entity to Afform and Searchkit.
214 - **Add price set entity api4 support
215 ([23694](https://github.com/civicrm/civicrm-core/pull/23694))**
217 Extends APIv4 to support the `PriceSet` entity.
219 - **Proposal - make future recurring contribution instances modifiable & not
220 fail if the only contribution is deleted. (Work Towards
221 [dev/financial#6](https://lab.civicrm.org/dev/financial/-/issues/6):
222 [22487](https://github.com/civicrm/civicrm-core/pull/22487))**
224 Makes it so `Contribution.repeattransaction` uses the template contribution.
228 - **CiviGrant - Add prefix to permission label
229 ([23668](https://github.com/civicrm/civicrm-core/pull/23668))**
231 Makes CiviGrant permissions easier to read on the Manage Permissions page.
235 - **Mailing List Subscription: remove the cancel button
236 ([23696](https://github.com/civicrm/civicrm-core/pull/23696))**
238 Improves user experience by removing the cancel button from the Mailing List
241 ### Drupal Integration
243 - **Epic: Drupal 10 readiness: Allow wider range of psr-log versions to be
244 installed (Work Towards
245 [dev/drupal#176](https://lab.civicrm.org/dev/drupal/-/issues/176):
246 [23409](https://github.com/civicrm/civicrm-core/pull/23409))**
248 Work Towards Drupal 10 readiness specifically by allowing a wider range of
249 psr-log versions to be installed.
251 ## <a name="bugs"></a>Bugs resolved
255 - **Dedupe rule creation should display labels of contact types, in case they
257 ([dev/core#492](https://lab.civicrm.org/dev/core/-/issues/492):
258 [23460](https://github.com/civicrm/civicrm-core/pull/23460))**
260 - **Can not use Custom Fields defined on a contact_sub_type in dedupe rule
261 ([dev/core#2300](https://lab.civicrm.org/dev/core/-/issues/2300):
262 [23459](https://github.com/civicrm/civicrm-core/pull/23459))**
264 - **Activity import ignores time component of activity_date_time if the import
265 file includes seconds and always ignores time for custom date fields
266 ([dev/core#2325](https://lab.civicrm.org/dev/core/-/issues/2325):
267 [23754](https://github.com/civicrm/civicrm-core/pull/23754) and
268 [23708](https://github.com/civicrm/civicrm-core/pull/23708))**
270 - **Muti-select import not working for Activity
271 ([dev/core#2706](https://lab.civicrm.org/dev/core/-/issues/2706)
272 and [dev/core#2308](https://lab.civicrm.org/dev/core/-/issues/2308):
273 [23764](https://github.com/civicrm/civicrm-core/pull/23764))**
275 - **Import fails on adding contacts to a group using contact ID only
276 ([dev/core#3160](https://lab.civicrm.org/dev/core/-/issues/3160):
277 [23756](https://github.com/civicrm/civicrm-core/pull/23756))**
279 - **Add 'yesno' html_type in Settings metadata
280 ([dev/core#3475](https://lab.civicrm.org/dev/core/-/issues/3475):
281 [23525](https://github.com/civicrm/civicrm-core/pull/23525))**
283 Allows 'yesno' as a valid value of `html_type`.
285 - **Primary email is not visually marked as primary
286 ([dev/core#3481](https://lab.civicrm.org/dev/core/-/issues/3481):
287 [23686](https://github.com/civicrm/civicrm-core/pull/23686))**
289 Fixes bug where Primary email was not bolded on the contact summary page when
292 - **Error when deleting a note: Undefined index: parent_id in
293 CRM_Note_Form_Note->postProcess()
294 ([dev/core#3483](https://lab.civicrm.org/dev/core/-/issues/3483):
295 [23730](https://github.com/civicrm/civicrm-core/pull/23730))**
297 - **Import Custom Data - Review of refactorings (Work Towards
298 [dev/core#3498](https://lab.civicrm.org/dev/core/-/issues/3498):
299 [23736](https://github.com/civicrm/civicrm-core/pull/23736))**
301 Fixes mishandled option values in import custom data code.
303 - **CiviCRM has not bootstrapped sufficiently to fire event
304 "hook_civicrm_entityTypes".
305 ([dev/core#3496](https://lab.civicrm.org/dev/core/-/issues/3496):
306 [23718](https://github.com/civicrm/civicrm-core/pull/23718))**
308 Missing extension leads to bootstrap error for "hook_civicrm_entityTypes".
310 - **CiviCRM has not bootstrapped sufficiently to fire event
311 "hook_civicrm_entity_supported_info"
312 ([dev/core#3502](https://lab.civicrm.org/dev/core/-/issues/3502):
313 [23785](https://github.com/civicrm/civicrm-core/pull/23785))**
315 Softer errors when CiviEventDispatcher is not-ready.
317 - **Import fixes for unicode url, Côte d’Ivoire
318 ([dev/core#3505](https://lab.civicrm.org/dev/core/-/issues/3505),
319 [dev/core#3506](https://lab.civicrm.org/dev/core/-/issues/3506) and
320 [dev/core#3052](https://lab.civicrm.org/dev/core/-/issues/3052):
321 [23755](https://github.com/civicrm/civicrm-core/pull/23755))**
323 - **After completing an activity import, it takes you to the contact import
324 screen ([dev/core#3513](https://lab.civicrm.org/dev/core/-/issues/3513):
325 [23766](https://github.com/civicrm/civicrm-core/pull/23766))**
327 Removes 'done' from the summary/import monitoring page.
329 - **Fix import activity & add tests
330 ([23707](https://github.com/civicrm/civicrm-core/pull/23707))**
332 Fixes a Fatal error in MapField.
334 - **Activity import error output missing the column the error is about
335 ([dev/core#3651](https://lab.civicrm.org/dev/core/-/issues/3651) and
336 [dev/core#1337](https://lab.civicrm.org/dev/core/-/issues/1337):
337 [23771](https://github.com/civicrm/civicrm-core/pull/23771))**
339 Fixes failure to show last column data in output, spaces in names.
341 - **Custom data type grouping mismatch
342 (Work Towards [dev/core#3658](https://lab.civicrm.org/dev/core/-/issues/3658):
343 [23842](https://github.com/civicrm/civicrm-core/pull/23842))**
345 Regenerates civicrm_generated to ensure that grouping is added on installs.
347 - **When upgrading an extension to use mixins, existing managed entities
348 get deleted ([dev/core#3660](https://lab.civicrm.org/dev/core/-/issues/3660):
349 [23824](https://github.com/civicrm/civicrm-core/pull/23824))**
351 - **Permissioned Relationship no longer set up for "On Behalf of Organization"
352 Membership Contribution Form submissions
353 ([dev/core#3675](https://lab.civicrm.org/dev/core/-/issues/3675):
354 [23865](https://github.com/civicrm/civicrm-core/pull/23865))**
356 - **Fix issue #116 api3 chain check_permissions
357 ([23671](https://github.com/civicrm/civicrm-core/pull/23671))**
359 - **Handle empty date token gracefully
360 ([23827](https://github.com/civicrm/civicrm-core/pull/23827))**
362 - **Fix Automatic renewal membership from front end contribution forms
363 ([23798](https://github.com/civicrm/civicrm-core/pull/23798))**
365 - **Fix target contact label back to include target
366 ([23763](https://github.com/civicrm/civicrm-core/pull/23763))**
368 - **Dedupe - Fix form buttons (again)
369 ([23757](https://github.com/civicrm/civicrm-core/pull/23757))**
371 - **Ensure setting deceased date sets is_deceased in the BAO
372 ([23521](https://github.com/civicrm/civicrm-core/pull/23521))**
374 - **Fix use of not-universally supported mysql field type
375 ([23501](https://github.com/civicrm/civicrm-core/pull/23501))**
377 - **Remove extra question mark from url
378 ([23480](https://github.com/civicrm/civicrm-core/pull/23480))**
380 - **Fix Schema System Check translation and show missing Custom Field ID
381 ([23469](https://github.com/civicrm/civicrm-core/pull/23469))**
383 - **php8.1 - Check null first before sending to strlen
384 ([23589](https://github.com/civicrm/civicrm-core/pull/23589))**
386 - **PHP8.1 - Fix deprecated passing null to glob
387 ([23713](https://github.com/civicrm/civicrm-core/pull/23713))**
389 - **Typo fix for Entity Id
390 ([23693](https://github.com/civicrm/civicrm-core/pull/23693))**
392 - **fix to get around link issues in ckeditor when opening scheduled reminder
393 in popup ([23510](https://github.com/civicrm/civicrm-core/pull/23510))**
395 - **fix disableUSPS since import running in separate context of Queue.
396 ([23777](https://github.com/civicrm/civicrm-core/pull/23777))**
398 - **Expand try-catch to whole function
399 ([23704](https://github.com/civicrm/civicrm-core/pull/23704))**
401 - **Make try-catch more catchy
402 ([23700](https://github.com/civicrm/civicrm-core/pull/23700))**
404 - **Print report permissions
405 ([dev/core#2540](https://lab.civicrm.org/dev/core/-/issues/2540):
406 [23616](https://github.com/civicrm/civicrm-core/pull/23616))**
408 Fixes a bug where when disabling the “access Report Criteria” permission, the
409 "Print report" and "Print to PDF" functions on a report appear, but do not
412 - **Fix createEmployerRelationship to work with the data it has when doing a
413 lookup, test ([23603](https://github.com/civicrm/civicrm-core/pull/23603))**
415 - **Fix swapOptions writing over selected options on mapField page load.
416 ([23619](https://github.com/civicrm/civicrm-core/pull/23619))**
418 - **Release lock when deleting cache key
419 ([23624](https://github.com/civicrm/civicrm-core/pull/23624))**
421 - **Greeting handling - if email_greeting_custom (etc) isset &
422 email_greeting_id is not, set to 'Customized'
423 ([23537](https://github.com/civicrm/civicrm-core/pull/23537))**
425 - **Catch & convert Guzzle exception
426 ([23765](https://github.com/civicrm/civicrm-core/pull/23765))**
428 - **CRM_Utils_Check - Catch Guzzle exception, same as core exception
429 ([23466](https://github.com/civicrm/civicrm-core/pull/23466))**
431 - **Allow for custom base page in AJAX requests
432 ([23420](https://github.com/civicrm/civicrm-core/pull/23420))**
434 Fixes a bug where custom base page does not work for AJAX requests from
437 - **Add integer validation to import
438 ([23753](https://github.com/civicrm/civicrm-core/pull/23753))**
440 - **E-notice fix on import
441 ([23541](https://github.com/civicrm/civicrm-core/pull/23541))**
443 - **Import - ensure userID is set on parser
444 ([23636](https://github.com/civicrm/civicrm-core/pull/23636))**
446 - **Import locations - code cleanup, add tests, fix bugs
447 ([23563](https://github.com/civicrm/civicrm-core/pull/23563))**
449 Most of this is code cleanup and tests but there is also a fix for importing
450 contacts with a location of Australia.
452 - **Import - Relax "is_required" check for custom fields
453 ([23576](https://github.com/civicrm/civicrm-core/pull/23576))**
455 - **APIv4 - Respect max length for name with export action
456 ([23472](https://github.com/civicrm/civicrm-core/pull/23472))**
458 - **APIv4 - Exclude disabled custom fields
459 ([23583](https://github.com/civicrm/civicrm-core/pull/23583))**
461 - **APIv4 - Allow creator to read `UserJob` and `Queue` records
462 ([23690](https://github.com/civicrm/civicrm-core/pull/23690))**
464 - **SearchKit - Fix pager & tab count after creating a new record in a popup
465 ([23579](https://github.com/civicrm/civicrm-core/pull/23579))**
467 - **SearchKit - Only add filter values to Afform title if passed internally
468 ([23807](https://github.com/civicrm/civicrm-core/pull/23807))**
470 - **[REGRESSION] SearchKit - Fix angular console error when totalCount is not
471 given ([23759](https://github.com/civicrm/civicrm-core/pull/23759))**
473 - **SearchKit - Fix default aggregate function for grand total rows
474 ([23573](https://github.com/civicrm/civicrm-core/pull/23573))**
476 - **SearchKit - Fix in-place editing custom relationship fields
477 ([23496](https://github.com/civicrm/civicrm-core/pull/23496))**
479 - **Searchkit - can't export more than x rows
480 ([dev/core#2736](https://lab.civicrm.org/dev/core/-/issues/2736):
481 [23548](https://github.com/civicrm/civicrm-core/pull/23548))**
483 - **SearchKit - Make inline edit only available when applicable
484 ([23404](https://github.com/civicrm/civicrm-core/pull/23404))**
486 - **SearchKit - Pick better default for aggregate functions
487 ([23446](https://github.com/civicrm/civicrm-core/pull/23446))**
489 - **SearchKit - Don't transform case for fieldsets on admin screen (more
490 translation-friendly)
491 ([23437](https://github.com/civicrm/civicrm-core/pull/23437))**
493 - **Afform - fix dependency injection for autogenerated forms
494 ([23818](https://github.com/civicrm/civicrm-core/pull/23818))**
498 - **show honor roll only if it's enabled for the PCP page
499 ([23567](https://github.com/civicrm/civicrm-core/pull/23567))**
503 - **Update case via API4 fails
504 ([dev/core#3671](https://lab.civicrm.org/dev/core/-/issues/3671):
505 [23836](https://github.com/civicrm/civicrm-core/pull/23836))**
507 Fix regression where updating cases via APIv4 fails.
511 - **Currency incorrectly displayed for price set text/quantity fields when
512 default currency is not USD
513 ([dev/core#3680](https://lab.civicrm.org/dev/core/-/issues/3680):
514 [23867](https://github.com/civicrm/civicrm-core/pull/23867))**
516 - **Fix editing and saving a template contribution via form
517 ([21471](https://github.com/civicrm/civicrm-core/pull/21471))**
519 - **Fix breakage in message preview on workflow contributions
520 ([23801](https://github.com/civicrm/civicrm-core/pull/23801))**
522 - **only check batch currency match when adding a financial_trxn
523 ([23788](https://github.com/civicrm/civicrm-core/pull/23788))**
525 - **Can no longer update Amount for Recurring Contributions even if it only has
527 ([dev/financial#197](https://lab.civicrm.org/dev/financial/-/issues/197):
528 [23805](https://github.com/civicrm/civicrm-core/pull/23805))**
530 - **Additional Details section on Recurring Contribution template edit screen
532 ([dev/financial#199](https://lab.civicrm.org/dev/financial/-/issues/199):
533 [23786](https://github.com/civicrm/civicrm-core/pull/23786))**
535 - **Fix Contribution import with pledge handling, add test
536 ([23717](https://github.com/civicrm/civicrm-core/pull/23717))**
538 - **Contribution import - tests & fixes on dates, amount
539 ([23688](https://github.com/civicrm/civicrm-core/pull/23688))**
541 - **[Import] Fix Contribution Import mapping fields to use labels
542 ([23519](https://github.com/civicrm/civicrm-core/pull/23519))**
544 - **Import contribution fails to update payment instrument in update mode
545 ([dev/core#3038](https://lab.civicrm.org/dev/core/-/issues/3038):
546 [23586](https://github.com/civicrm/civicrm-core/pull/23586))**
550 - **Fix missing contactID when registering for paid event from waitlist
551 ([23358](https://github.com/civicrm/civicrm-core/pull/23358))**
553 - **Capitalise event setting title
554 ([23467](https://github.com/civicrm/civicrm-core/pull/23467))**
556 - **Participant import fix - broken uniqueName fields, mapping saving, etc.
557 ([23733](https://github.com/civicrm/civicrm-core/pull/23733))**
559 - **Fix Participant import, add tests
560 ([23703](https://github.com/civicrm/civicrm-core/pull/23703))**
562 Fixes a Fatal error in MapField.
564 - **CiviEvent Search does not show all results
565 ([dev/core#3459](https://lab.civicrm.org/dev/core/-/issues/3459):
566 [23609](https://github.com/civicrm/civicrm-core/pull/23609))**
570 - **Installer - CiviGrant option no longer works
571 ([dev/core#3485](https://lab.civicrm.org/dev/core/-/issues/3485):
572 [23758](https://github.com/civicrm/civicrm-core/pull/23758))**
574 Removes CiviGrant from available components.
578 - **Prefer frontend_title for mailing groups in {mailing.group}
579 ([dev/core#3463](https://lab.civicrm.org/dev/core/-/issues/3463):
580 [23570](https://github.com/civicrm/civicrm-core/pull/23570))**
582 - **Greeting tokens are not replaced in bulk sms
583 ([dev/core#3177](https://lab.civicrm.org/dev/core/-/issues/3177):
584 [23516](https://github.com/civicrm/civicrm-core/pull/23516))**
586 Switches sms to use flexmailer token rendering.
590 - **Bug Fix: Merging an Organisation contact and de-selecting the merge
591 Membership checkbox causes all related Membership to not be removed and the
592 Primary Membership is linked to the deleted Organisation
593 ([22682](https://github.com/civicrm/civicrm-core/pull/22682))**
595 - **Added back 'Renewal Message' field on Membership renewal form
596 ([23726](https://github.com/civicrm/civicrm-core/pull/23726))**
598 - **Membership should be listed chronologically by join date, the most recent
600 ([dev/core#3141](https://lab.civicrm.org/dev/core/-/issues/3141):
601 [23056](https://github.com/civicrm/civicrm-core/pull/23056))**
603 ### Backdrop Integration
605 - **CiviCRM cron via HTTP on Backdrop isn't documented and doesn't work
606 ([dev/backdrop#8](https://lab.civicrm.org/dev/backdrop/-/issues/8):
607 [23620](https://github.com/civicrm/civicrm-core/pull/23620))**
609 ### Drupal Integration
611 - **Use correct user variable in hook_user_insert
612 ([74](https://github.com/civicrm/civicrm-drupal-8/pull/74))**
614 - **KCFinder on D9: You don't have permissions to browse server.
615 ([dev/drupal#179](https://lab.civicrm.org/dev/drupal/-/issues/179):
616 [342](https://github.com/civicrm/civicrm-packages/pull/342))**
618 - **Drupal8/9 Sync email own user from Civi
619 ([dev/core#3467](https://lab.civicrm.org/dev/core/-/issues/3467):
620 [23546](https://github.com/civicrm/civicrm-core/pull/23546))**
622 Drupal 8 - Skips requirement for password when changing your own civi contact's
625 ### Joomla Integration
627 - **[Joomla 4.0] Warnings when CiviCRM is uninstalled (Work towards
628 [dev/joomla#16](https://lab.civicrm.org/dev/joomla/-/issues/16):
629 [65](https://github.com/civicrm/civicrm-joomla/pull/65))**
631 Fixes CiviCRM logo not showing in Quick Icon plugin.
633 - **[Joomla 4.0] Fatal error on submitting Profile with CMS username/password
634 ([23549](https://github.com/civicrm/civicrm-core/pull/23549))**
636 - **Error when upgrading to 5.16.0
637 ([dev/drupal#79](https://lab.civicrm.org/dev/drupal/issues/79):
638 [51](https://github.com/civicrm/civicrm-joomla/pull/51))**
640 Updates PHP version checks to throw a more digestable error when the PHP
641 version is not compatible.
643 ## <a name="misc"></a>Miscellany
645 - **Afform - Trigger 'crmFormSuccess' event after submission
646 ([23735](https://github.com/civicrm/civicrm-core/pull/23735))**
648 - **Afform - allow ids to be passed directly into the directive
649 ([23656](https://github.com/civicrm/civicrm-core/pull/23656))**
651 - **SearchKit - Remove confusing extra joins between Contact & Related Contacts
652 ([23655](https://github.com/civicrm/civicrm-core/pull/23655))**
654 - **Authx - Mark extension as beta
655 ([23601](https://github.com/civicrm/civicrm-core/pull/23601))**
657 - **Duplicate function - divide & conquer
658 ([23542](https://github.com/civicrm/civicrm-core/pull/23542))**
660 - **Deprecate crazy BAO handling of preferred_communication_method
661 ([23623](https://github.com/civicrm/civicrm-core/pull/23623))**
663 - **Simplify return from createContact
664 ([23635](https://github.com/civicrm/civicrm-core/pull/23635))**
666 - **Simplify greeting handling, add test
667 ([23629](https://github.com/civicrm/civicrm-core/pull/23629))**
669 - **Deprecate stuff getting super deep into the BAO unformatted
670 ([23520](https://github.com/civicrm/civicrm-core/pull/23520))**
672 - **Add not-yet-used function to allow the import to run in static (queue)
673 context ([23691](https://github.com/civicrm/civicrm-core/pull/23691))**
675 - **FiveFiftyOne - Enable snapshots for data modified data
676 ([23783](https://github.com/civicrm/civicrm-core/pull/23783))**
678 - **Translation: remove support for CiviCRM pre-4.5 l10n file locations
679 ([23435](https://github.com/civicrm/civicrm-core/pull/23435))**
681 - **APIv3 - Fix regression in handling chained calls with `sequential`
682 ([23672](https://github.com/civicrm/civicrm-core/pull/23672))**
684 - **Update contributor-key.yml
685 ([23633](https://github.com/civicrm/civicrm-core/pull/23633))**
687 - **Whitespace cleanup - remove `if(1)`
688 ([23621](https://github.com/civicrm/civicrm-core/pull/23621))**
690 - **Reformat whitespace
691 ([23676](https://github.com/civicrm/civicrm-core/pull/23676))**
693 - **Another always-true-if
694 ([23559](https://github.com/civicrm/civicrm-core/pull/23559))**
696 - **Painstaking unravelling of function
697 ([23483](https://github.com/civicrm/civicrm-core/pull/23483))**
699 - **Consolidate datasource form - event import
700 ([23457](https://github.com/civicrm/civicrm-core/pull/23457))**
702 - **Trivial extraction - addFormButtons shared code
703 ([23709](https://github.com/civicrm/civicrm-core/pull/23709))**
705 - **Move validate field function to the parent class [Straight move]
706 ([23564](https://github.com/civicrm/civicrm-core/pull/23564))**
708 - **Add noisy deprecation to unused, deprecated, functions
709 ([23571](https://github.com/civicrm/civicrm-core/pull/23571))**
711 - **Minor simplification - use `$self->getContactType(),`
712 ([23710](https://github.com/civicrm/civicrm-core/pull/23710))**
714 - **Clean up function signature
715 ([23550](https://github.com/civicrm/civicrm-core/pull/23550))**
717 - **Minor cleanup on import return codes
718 ([23626](https://github.com/civicrm/civicrm-core/pull/23626))**
720 - **Cleanup sql query
721 ([23512](https://github.com/civicrm/civicrm-core/pull/23512))**
723 - **Cleanup gender handling in contact import + add test
724 ([23484](https://github.com/civicrm/civicrm-core/pull/23484))**
726 - **ProximityQuery - Remove unused code
727 ([23581](https://github.com/civicrm/civicrm-core/pull/23581))**
729 - **Remove unused class
730 ([23580](https://github.com/civicrm/civicrm-core/pull/23580))**
732 - **Remove unused properties
733 ([23701](https://github.com/civicrm/civicrm-core/pull/23701))**
735 - **Remove deprecated preferred_mail_format from more places...
736 ([23565](https://github.com/civicrm/civicrm-core/pull/23565))**
738 - **Remove some never used fields - copy & paste begone
739 ([23605](https://github.com/civicrm/civicrm-core/pull/23605))**
741 - **Remove obsolete code - this parameter is not possible
742 ([23625](https://github.com/civicrm/civicrm-core/pull/23625))**
744 - **Remove unused variables
745 ([23613](https://github.com/civicrm/civicrm-core/pull/23613))**
747 - **Remove no-longer-used function 29 points
748 ([23653](https://github.com/civicrm/civicrm-core/pull/23653))**
750 - **Remove legacy calls to `civicrm_error`, unpack return
751 ([23634](https://github.com/civicrm/civicrm-core/pull/23634))**
753 - **Remove some unused variables
754 ([23614](https://github.com/civicrm/civicrm-core/pull/23614))**
756 - **Remove do-nothing deprecated line
757 ([23556](https://github.com/civicrm/civicrm-core/pull/23556))**
759 - **Remove unreachable code
760 ([23551](https://github.com/civicrm/civicrm-core/pull/23551))**
762 - **Remove a couple of non-test tests - syntax conformance
763 ([23715](https://github.com/civicrm/civicrm-core/pull/23715))**
765 - **Remove some more unused code
766 ([23747](https://github.com/civicrm/civicrm-core/pull/23747))**
768 - **Remove always-true if-check
769 ([23530](https://github.com/civicrm/civicrm-core/pull/23530))**
771 - **Remove extraneous deprecated check
772 ([23532](https://github.com/civicrm/civicrm-core/pull/23532))**
774 - **Remove obsolete/unused code, fix notices - activity import
775 ([23745](https://github.com/civicrm/civicrm-core/pull/23745))**
777 - **Remove more obsolete import code
778 ([23742](https://github.com/civicrm/civicrm-core/pull/23742))**
780 - **Remove unused functions
781 ([23740](https://github.com/civicrm/civicrm-core/pull/23740))**
783 - **Remove always true if conditions (whitespace in next commit)
784 ([23533](https://github.com/civicrm/civicrm-core/pull/23533))**
786 - **Remove never-true fields, and impossible property handling from previously
787 shared function ([23545](https://github.com/civicrm/civicrm-core/pull/23545))**
789 - **Remove sets for no-longer gotten vars
790 ([23453](https://github.com/civicrm/civicrm-core/pull/23453))**
792 - **(NFC) karma - Enable all Civi components (not just CiviCase)
793 ([23450](https://github.com/civicrm/civicrm-core/pull/23450))**
795 - **[NFC] Improve comment blocks for mapper
796 ([23517](https://github.com/civicrm/civicrm-core/pull/23517))**
798 - **[NFC] Remove weird file
799 ([23539](https://github.com/civicrm/civicrm-core/pull/23539))**
801 - **[NFC] Remove weird test data file
802 ([23727](https://github.com/civicrm/civicrm-core/pull/23727))**
804 - **[NFC] Fix Since version in Price Set Entity APIv4
805 ([23698](https://github.com/civicrm/civicrm-core/pull/23698))**
807 - **[NFC] Mixin - update version tags and add comment for new version of mgd-php
808 ([23685](https://github.com/civicrm/civicrm-core/pull/23685))**
810 - **[NFC] Failing test for api chain using sequential
811 ([23675](https://github.com/civicrm/civicrm-core/pull/23675))**
813 - **(NFC) Scheduled Reminders - Reinstate and analyze test-case for "Also
814 Include" ([23628](https://github.com/civicrm/civicrm-core/pull/23628))**
816 - **[NFC] Bring back deleted activity email tests
817 ([23577](https://github.com/civicrm/civicrm-core/pull/23577))**
819 - **(NFC) CRM_Utils_Hook - Typo
820 ([23448](https://github.com/civicrm/civicrm-core/pull/23448))**
822 - **Ref Extract import validation
823 ([23498](https://github.com/civicrm/civicrm-core/pull/23498))**
825 - **[Ref] [Import] Cleanup function return
826 ([23511](https://github.com/civicrm/civicrm-core/pull/23511))**
828 - **[REF] [Import] Remove unused parameter
829 ([23495](https://github.com/civicrm/civicrm-core/pull/23495))**
831 - **[REF] [Import] Remove now-unused code
832 ([23461](https://github.com/civicrm/civicrm-core/pull/23461))**
834 - **[REF] [Import] Stop calling Parser in MapField mode (contact import)
835 ([23470](https://github.com/civicrm/civicrm-core/pull/23470))**
837 - **[REF] [Import] Minor simplification
838 ([23464](https://github.com/civicrm/civicrm-core/pull/23464))**
840 - **[REF] [Import] Remove unused variable
841 ([23463](https://github.com/civicrm/civicrm-core/pull/23463))**
843 - **[REF] [Import] Remove unused field get action (death to copy & paste)
844 ([23428](https://github.com/civicrm/civicrm-core/pull/23428))**
846 - **[REF] [Import] Simplify if - exit loop early
847 ([23427](https://github.com/civicrm/civicrm-core/pull/23427))**
849 - **[REF] [Import] Activity - clean up copy & paste
850 ([23289](https://github.com/civicrm/civicrm-core/pull/23289))**
852 - **[Import] [Ref] Trivial - fold function contents back into parent
853 ([23610](https://github.com/civicrm/civicrm-core/pull/23610))**
855 - **Extend import option handling to prefix, suffix, language,
857 ([23535](https://github.com/civicrm/civicrm-core/pull/23535))**
859 - **[Import] Consolidate DataSource.tpl - template for first file on activity
860 import ([23456](https://github.com/civicrm/civicrm-core/pull/23456))**
862 - **[Import] Check subtype validity in validate rather than wait for 'imort'
863 ([23526](https://github.com/civicrm/civicrm-core/pull/23526))**
865 - **[Import] Use table rather than csvs for no-match & unparsed
866 ([23418](https://github.com/civicrm/civicrm-core/pull/23418))**
868 - **[Import] Unpack the weird wild error return
869 ([23474](https://github.com/civicrm/civicrm-core/pull/23474))**
871 - **[Import] Remove handling for unavailable field current_employer
872 ([23509](https://github.com/civicrm/civicrm-core/pull/23509))**
874 - **Contribution import - simplify error handling
875 ([23714](https://github.com/civicrm/civicrm-core/pull/23714))**
877 - **[Import] [Contribution] Cleanup templates & form variables, following
879 ([23683](https://github.com/civicrm/civicrm-core/pull/23683))**
881 - **Contact import - extract common code, make tags & groups queue-friendly
882 ([23680](https://github.com/civicrm/civicrm-core/pull/23680))**
884 - **Contact Import cleanup - includes fixes to contact machine
885 ([23666](https://github.com/civicrm/civicrm-core/pull/23666))**
887 - **[Import] Add some not-yet-used `getParser` functions that are prone to
888 conflict ([23590](https://github.com/civicrm/civicrm-core/pull/23590))**
890 - **[Import] Remove empty if
891 ([23531](https://github.com/civicrm/civicrm-core/pull/23531))**
893 - **[Import] Fix & test check on contact subtype change
894 ([23508](https://github.com/civicrm/civicrm-core/pull/23508))**
896 - **[Import] [Ref] Remove unused variable
897 ([23462](https://github.com/civicrm/civicrm-core/pull/23462))**
899 - **[Import] Remove silly param
900 ([23493](https://github.com/civicrm/civicrm-core/pull/23493))**
902 - **[Import] Remove svn whimsy - DUPLICATE_REPLACE
903 ([23504](https://github.com/civicrm/civicrm-core/pull/23504))**
905 - **[Import] Remove `if (1) {` (whitespace intensive)
906 ([23494](https://github.com/civicrm/civicrm-core/pull/23494))**
908 - **[Import] Cleanup Contribution flow - esp with regards to soft credits
909 ([23588](https://github.com/civicrm/civicrm-core/pull/23588))**
911 - **[Import] [Ref] [Contribution] Additional functions, typo fix
912 ([23637](https://github.com/civicrm/civicrm-core/pull/23637))**
914 - **[Import] Test + fix for failure to reject invalid ex identifier
915 ([23560](https://github.com/civicrm/civicrm-core/pull/23560))**
917 - **[Import] [ref] Move function to parent for use by siblings
918 ([23592](https://github.com/civicrm/civicrm-core/pull/23592))**
920 - **[Import] Add tests for contact type & contact subtype handling
921 ([23475](https://github.com/civicrm/civicrm-core/pull/23475))**
923 - **[Import] Simplify checking contact type is valid
924 ([23476](https://github.com/civicrm/civicrm-core/pull/23476))**
926 - **[Import] Stop passing unused parameter
927 ([23421](https://github.com/civicrm/civicrm-core/pull/23421))**
929 - **[Ref] [Import][Member] Remove unused params
930 ([23425](https://github.com/civicrm/civicrm-core/pull/23425))**
932 - **[REF] [Import] Create user-job records for Memership imports
933 ([23416](https://github.com/civicrm/civicrm-core/pull/23416))**
935 - **(REF) Importer - Remove unused parameters. Simplify signature.
936 ([23401](https://github.com/civicrm/civicrm-core/pull/23401))**
938 - **[REF] Import - make condition clearer
939 ([23382](https://github.com/civicrm/civicrm-core/pull/23382))**
941 - **[REF] [Import] Contribution import - clarify return codes
942 ([23290](https://github.com/civicrm/civicrm-core/pull/23290))**
944 - **[REF] [Import] Summary tpl - remove always-true ifs
945 ([23406](https://github.com/civicrm/civicrm-core/pull/23406))**
947 - **[REF][Import] Remove some, now unused, parameters
948 ([23405](https://github.com/civicrm/civicrm-core/pull/23405))**
950 - **[REF] [Import] Parser cleanup
951 ([23442](https://github.com/civicrm/civicrm-core/pull/23442))**
953 - **[REF] [Import] Minor code cleanup
954 ([23444](https://github.com/civicrm/civicrm-core/pull/23444))**
956 - **[Import] Reduce unused copy & paste
957 ([23400](https://github.com/civicrm/civicrm-core/pull/23400))**
959 - **[REF] [Import] Stop passing unused parameters
960 ([23386](https://github.com/civicrm/civicrm-core/pull/23386))**
962 - **[Import] [Ref] Iterate through the mapping of fields
963 ([23384](https://github.com/civicrm/civicrm-core/pull/23384))**
965 - **[Ref][Import] Remove now-unused code
966 ([23395](https://github.com/civicrm/civicrm-core/pull/23395))**
968 - **[TEST ONLY] APIv4 - Remove unused extras from ConformanceTest
969 ([23410](https://github.com/civicrm/civicrm-core/pull/23410))**
971 - **[TEST ONLY] APIv4 - ensure test records are cleaned up in non-transaction
972 tests ([23441](https://github.com/civicrm/civicrm-core/pull/23441))**
974 - **Test cleanup - use names keys in mapper array where possible for clarity
975 ([23627](https://github.com/civicrm/civicrm-core/pull/23627))**
978 ([23562](https://github.com/civicrm/civicrm-core/pull/23562))**
980 - **Add location import testing
981 ([23540](https://github.com/civicrm/civicrm-core/pull/23540))**
984 ([23561](https://github.com/civicrm/civicrm-core/pull/23561))**
986 - **Add unit tests to cover date field imports
987 ([23502](https://github.com/civicrm/civicrm-core/pull/23502))**
989 - **Payment forms test fixes
990 ([23524](https://github.com/civicrm/civicrm-core/pull/23524))**
992 - **Re-use code in test
993 ([23523](https://github.com/civicrm/civicrm-core/pull/23523))**
995 - **Fix test to validate forms & remove some unused code
996 ([23734](https://github.com/civicrm/civicrm-core/pull/23734))**
998 - **Reduce test output spam
999 ([23750](https://github.com/civicrm/civicrm-core/pull/23750))**
1001 - **Fix for failing test in master
1002 ([23751](https://github.com/civicrm/civicrm-core/pull/23751))**
1004 - **[REF] [TEST ONLY] APIv4 - Reorganize test classes, don't use transactions
1005 for custom field tests
1006 ([23402](https://github.com/civicrm/civicrm-core/pull/23402))**
1008 - **[REF] Fix second output in customFormat function and extend unit test
1009 ([23815](https://github.com/civicrm/civicrm-core/pull/23815))**
1011 - **(REF) CRM_Dedupe_BAO_DedupeRule - Support third party fields and tables in
1012 rules ([23332](https://github.com/civicrm/civicrm-core/pull/23332))**
1014 - **Update guzzle to 6.5.7
1015 ([23748](https://github.com/civicrm/civicrm-core/pull/23748))**
1017 - **[REF] Update Guzzle to be 6.5.8
1018 ([23858](https://github.com/civicrm/civicrm-core/pull/23858))**
1020 - **[REF] Fix PHP8.1 issue with passing NULL to trim()
1021 ([23317](https://github.com/civicrm/civicrm-core/pull/23317))**
1023 - **[REF] Remove handling for non-existent 'savedMapping' field
1024 ([23283](https://github.com/civicrm/civicrm-core/pull/23283))**
1026 - **[REF] Improve Get Coordinates by supporting other geocoding providers…
1027 ([23646](https://github.com/civicrm/civicrm-core/pull/23646))**
1029 - **[REF] Minor simplification on input
1030 ([23536](https://github.com/civicrm/civicrm-core/pull/23536))**
1032 - **(REF) CRM_Upgrade_Form - Remove silly method `runQuery`
1033 ([23492](https://github.com/civicrm/civicrm-core/pull/23492))**
1035 - **[REF] APIv4 - Simplify entity creation in test suite
1036 ([23432](https://github.com/civicrm/civicrm-core/pull/23432))**
1038 - **[REF] Move list of fields that have been upgraded
1039 ([23518](https://github.com/civicrm/civicrm-core/pull/23518))**
1041 - **[REF] Remove unreachable code
1042 ([23507](https://github.com/civicrm/civicrm-core/pull/23507))**
1044 - **[REF] Simplify contact.create
1045 ([23515](https://github.com/civicrm/civicrm-core/pull/23515))**
1047 - **[REF] Fix handling of NULL values in count_characters smarty modifier by
1048 creating a CiviCRM specific one that handles them
1049 ([23318](https://github.com/civicrm/civicrm-core/pull/23318))**
1051 ## <a name="credits"></a>Credits
1053 This release was developed by the following code authors:
1055 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
1056 Benjamin W; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
1057 Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu
1058 Lutfy; Dave D; Davis Media Access - Darrick Servis; Deepak Srivastava;
1059 ES-Progress - Sandor Semsey; Freeform Solutions - Herb van den Dool;
1060 Fuzion - Luke Stewart; iXiam - CĂ©sar Ramos; JMA Consulting - Monish Deb, Seamus
1061 Lee; Klangsoft - David Reedy Jr; Lighthouse Consulting and Design - Brian
1062 Shaughnessy; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg;
1063 MJW Consulting - Matthew Wire; Nicol Wistreich; Progressive Technology
1064 Project - Jamie McClelland; Robert J. Lang; Squiffle Consulting - Aidan
1065 Saunders; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen
1068 Most authors also reviewed code for this release; in addition, the following
1069 reviewers contributed their comments:
1071 Agileware - Justin Freeman; ALL IN APPLI; Andy Clark; Artful Robot - Rich Lott;
1072 Australian Greens - Andrew Cormick-Dockery; Betty Dolfing; Blackfly
1073 Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Coop SymbioTIC - Samuel Vanhove;
1074 DevApp - Adam Kwiatkowski; Francesc Bassas i Bullich; Fuzion - Peter Davis;
1075 Greenleaf Advancement - Guy Iaccarino; Humanists UK - Andrew West; jaomalley;
1076 Jens Schuppe; Semper IT - Karin Gerritsen; Tadpole Collective - Kevin Cristiano;