Merge pull request #23972 from colemanw/primaryLocationWrite
[civicrm-core.git] / release-notes / 5.50.0.md
1 # CiviCRM 5.50.0
2
3 Released June 1, 2022
4
5 - **[Synopsis](#synopsis)**
6 - **[Security advisories](#security)**
7 - **[Features](#features)**
8 - **[Bugs resolved](#bugs)**
9 - **[Miscellany](#misc)**
10 - **[Credits](#credits)**
11 - **[Feedback](#feedback)**
12
13 ## <a name="synopsis"></a>Synopsis
14
15 | *Does this version...?* | |
16 |:--------------------------------------------------------------- |:-------:|
17 | Fix security vulnerabilities? | **yes** |
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** |
24
25 ## <a name="security"></a>Security advisories
26
27 - **[CIVI-SA-2022-07: APIv3 Access Bypass](https://civicrm.org/advisory/civi-sa-2022-07-apiv3-access-bypass)**
28
29 ## <a name="features"></a>Features
30
31 ### Core CiviCRM
32
33 - **System Check - Add a reminder about CIVICRM_SIGN_KEYS.
34 ([23224](https://github.com/civicrm/civicrm-core/pull/23224))**
35
36 Adds a system status check that generates a reminder about cryptographic
37 signing keys.
38
39 - **Restrict allowed uploads - contact image
40 ([23147](https://github.com/civicrm/civicrm-core/pull/23147))**
41
42 Restrict file types allowed for the contact image field.
43
44 - **Add tracking table for import jobs
45 ([dev/core#1307](https://lab.civicrm.org/dev/core/-/issues/1307):
46 [23199](https://github.com/civicrm/civicrm-core/pull/23199) and
47 [23245](https://github.com/civicrm/civicrm-core/pull/23245))**
48
49 This adds a new table for the purpose of tracking user jobs (e.g. imports) and
50 associated temp tables and starts tracking the submittedValues and data source
51 with it.
52
53 - **CustomFields - Improve metadata about which custom groups belong to which
54 entities ([23336](https://github.com/civicrm/civicrm-core/pull/23336))**
55
56 Makes the relationship between Custom Field Groups, entity types and subtypes
57 discoverable via APIv4 metadata.
58
59 - **Upgrader - Add support for automatic snapshots
60 ([23522](https://github.com/civicrm/civicrm-core/pull/23522) and
61 [23544](https://github.com/civicrm/civicrm-core/pull/23594))**
62
63 This adds a utility for recording a snapshot of certain columns in a database
64 table prior to applying any upgrade steps to it. This will make it easier to
65 roll back or compare changes if necessary after the upgrade.
66
67 The snapshot tables begin with the prefix `snap_civicrm_` and will be cleaned
68 up after a certain number of minor version upgrades. For now, the feature is
69 disabled by default, but you may enable it by adding
70
71 define('CIVICRM_UPGRADE_SNAPSHOT', TRUE);
72
73 to the settings file.
74
75 - **Api4 - minor fixes and updates
76 ([23310](https://github.com/civicrm/civicrm-core/pull/23310))**
77
78 A few minor tweaks to APIv4 to improve working with extensions that have
79 virtual entities.
80
81 - **APIv4 - Add NOW() date function
82 ([23378](https://github.com/civicrm/civicrm-core/pull/23378))**
83
84 Adds a function for NOW to APIv4 which returns the full date+time, and
85 distinguishes it from CURDATE which just returns the date part.
86
87 - **APIv4 - Add MONTH sql function
88 ([23377](https://github.com/civicrm/civicrm-core/pull/23377))**
89
90 Adds the MONTH function to APIv4 & SearchKit, which enables e.g. filtering
91 birthdays by month.
92
93 - **APIv4 - Add `is_active` extra field to Domain entity
94 ([22159](https://github.com/civicrm/civicrm-core/pull/22159))**
95
96 Adds a new calculated field to APIv4 making it easier to get the current
97 active domain.
98
99 - **APIv4 - Add `Managed::reconcile` action.
100 ([23243](https://github.com/civicrm/civicrm-core/pull/23243))**
101
102 Adds APIv4 wrapper around ManagedEntities->reconcile();
103
104 - **Implement countFetched() and countMatched() on api4 results.
105 ([22115](https://github.com/civicrm/civicrm-core/pull/22115))**
106
107 Provides clearer methods for finding out how many API4 results you've got.
108
109 - **SearchKit - Add data segmentation functionality
110 ([23059](https://github.com/civicrm/civicrm-core/pull/23059))**
111
112 Creates virtual fields based on flexible segmentation criteria.
113
114 - **SearchKit - Add date pseudo-fields
115 ([23381](https://github.com/civicrm/civicrm-core/pull/23381))**
116
117 Exposes date pseudo-fields to SearchKit.
118
119 - **make survey title available in form builder
120 ([23322](https://github.com/civicrm/civicrm-core/pull/23322))**
121
122 Makes the Survey title field available in Afform.
123
124 - **Afform - Dispatch event to alter admin metadata; provide mixin
125 ([23303](https://github.com/civicrm/civicrm-core/pull/23303))**
126
127 Makes Form-Builder more extensible by allowing extensions to add to the list
128 of available entities, elements, input types, styles, etc.
129
130 - **Afform - Improve dragging into dropzones
131 ([23239](https://github.com/civicrm/civicrm-core/pull/23239))**
132
133 Improves the drag-n-drop UX in Afform when composing complex layouts.
134
135 - **AfformGui - Optional reset button for search and submit forms
136 ([dev/core#3430](https://lab.civicrm.org/dev/core/-/issues/3430):
137 [23334](https://github.com/civicrm/civicrm-core/pull/23334))**
138
139 Adds a "reset" button for search forms.
140
141 - **Add icons for SavedSearch and SearchDisplay entities
142 ([23149](https://github.com/civicrm/civicrm-core/pull/23149))**
143
144 Improves user experience by adding icons for Saved Search and Search Display
145 entities.
146
147 - **Simplify and improve performance of query to insert updated cache
148 ([21943](https://github.com/civicrm/civicrm-core/pull/21943))**
149
150 Caching performance improvement.
151
152 ### CiviCampaign
153
154 - **Make links to sign a petition easily accessible on the form.
155 ([23316](https://github.com/civicrm/civicrm-core/pull/23316))**
156
157 Adds links to the bottom of the petition edit form so users can more easily
158 publicize their petition.
159
160 ### CiviCase
161
162 - **Activity Type + Activity Status + Case Type not being Combined Correctly in
163 Search Builder
164 ([dev/core#3249](https://lab.civicrm.org/dev/core/-/issues/3249):
165 [23313](https://github.com/civicrm/civicrm-core/pull/23313))**
166
167 This makes `CaseType` in APIv4 a managed entity. This is part of a move
168 towards having all cases defined in configuration and deprecating XML-defined
169 case types.
170
171 ### CiviContribute
172
173 - **Define return parameters for doPayment
174 ([dev/financial#141](https://lab.civicrm.org/dev/financial/-/issues/141):
175 [22683](https://github.com/civicrm/civicrm-core/pull/22683))**
176
177 Updates return parameters on all payment processors to match expected results.
178
179 ### Drupal Integration
180
181 - **Extend command drush civicrm-ext-list for Drupal 8
182 ([72](https://github.com/civicrm/civicrm-drupal-8/pull/72))**
183
184 Extends the `drush civicrm-ext-list` command to work for drupal 8.
185
186 ### Wordpress Integration
187
188 - **WordPress - Display site-theme/decorations on error screens
189 ([22805](https://github.com/civicrm/civicrm-core/pull/22805))**
190
191 Improve error screen user experience by displaying site theme/decorations.
192
193 ## <a name="bugs"></a>Bugs resolved
194
195 ### Core CiviCRM
196
197 - **Improve validation of start and end dates for events, contribution pages and
198 more (Work Towards
199 [dev/core#2846](https://lab.civicrm.org/dev/core/-/issues/2846):
200 [21513](https://github.com/civicrm/civicrm-core/pull/21513))**
201
202 Applies form-level validation to start and end dates.
203
204 - **Report Filter Statistics don't show filters with value of "0"
205 ([dev/core#3164](https://lab.civicrm.org/dev/core/-/issues/3164):
206 [23191](https://github.com/civicrm/civicrm-core/pull/23191))**
207
208 - **Fix 'Authorization Failed' regression when submitting eg. webform via
209 checksum ([23607](https://github.com/civicrm/civicrm-core/pull/23607))**
210
211 This resolves a bug where accessing an entity through APIv3, coming in via a
212 checksum link, results in a failed authorization for the step of updating the
213 recent items stack via APIv4.
214
215 - **Manage Extensions - Hide nag for core exts
216 ([dev/core#3171](https://lab.civicrm.org/dev/core/-/issues/3171):
217 [23204](https://github.com/civicrm/civicrm-core/pull/23204))**
218
219 - **AuthX: Breaks sites when Basic Auth is enabled
220 ([dev/core#3416](https://lab.civicrm.org/dev/core/-/issues/3416):
221 [22837](https://github.com/civicrm/civicrm-core/pull/22837))**
222
223 - **Save button on API4 explorer is misleading
224 ([dev/core#3155](https://lab.civicrm.org/dev/core/-/issues/3155):
225 [23144](https://github.com/civicrm/civicrm-core/pull/23144))**
226
227 - **APIv4 - Support pseudoconstant suffixes in getFields
228 ([23348](https://github.com/civicrm/civicrm-core/pull/23348))**
229
230 - **APIv4 - Deprecate unnecessary event
231 ([23311](https://github.com/civicrm/civicrm-core/pull/23311))**
232
233 - **SearchKit - Consistently check for date field
234 ([23354](https://github.com/civicrm/civicrm-core/pull/23354))**
235
236 - **SearchKit - Ensure all date and timestamp fields are presented with datepicker
237 ([23335](https://github.com/civicrm/civicrm-core/pull/23335))**
238
239 - **SearchKit - Keep label when switching entity
240 ([23319](https://github.com/civicrm/civicrm-core/pull/23319))**
241
242 - **SearchKit - Move grid css to its own file
243 ([23315](https://github.com/civicrm/civicrm-core/pull/23315))**
244
245 - **SearchKit - Fix 'undefined var' error after import
246 ([23572](https://github.com/civicrm/civicrm-core/pull/23572))**
247
248 Fixes an unresponsive screen after importing multiple records into SearchKit
249 (using the Import dialog).
250
251 - **add missing Parishes of Bermuda (civicrm_state_province)
252 ([23339](https://github.com/civicrm/civicrm-core/pull/23339))**
253
254 - **PR 22070 follow-up: reinstate respecting no_display on report column headers
255 ([23321](https://github.com/civicrm/civicrm-core/pull/23321))**
256
257 Respect no_display on report column headers.
258
259 - **Remove preferred email format from inline edit
260 ([23269](https://github.com/civicrm/civicrm-core/pull/23269))**
261
262 - **Do not escape wizard class - procede straight to Hogwarts
263 ([23185](https://github.com/civicrm/civicrm-core/pull/23185))**
264
265 - **jira/browse/CRM-18217 On the website front-end, CiviCRM page heading should
266 start from h2 and not h1
267 ([23324](https://github.com/civicrm/civicrm-core/pull/23324))**
268
269 - **Disable scrolling on time inputs
270 ([dev/user-interface#47](https://lab.civicrm.org/dev/user-interface/-/issues/47):
271 [23264](https://github.com/civicrm/civicrm-core/pull/23264))**
272
273 - **SearchKit - Fix selection of fields when creating a Data Segment
274 ([23265](https://github.com/civicrm/civicrm-core/pull/23265))**
275
276 - **APIv4 - Fix fatal error on getFields when passing in contact id
277 ([23389](https://github.com/civicrm/civicrm-core/pull/23389))**
278
279 - **ACLCache: Efficiency. Fix duplicate inserts
280 ([21993](https://github.com/civicrm/civicrm-core/pull/21993))**
281
282 - **Update expired root certs (5.50)
283 ([23387](https://github.com/civicrm/civicrm-core/pull/23387))**
284
285 - **Fix 'Table already exists' error when running 5.50 upgrade twice
286 ([23355](https://github.com/civicrm/civicrm-core/pull/23355))**
287
288 - **5.50.alpha1.mysql.tpl - Escape `grouping` (reserved word in MySQL 8.0)
289 ([23396](https://github.com/civicrm/civicrm-core/pull/23396))**
290
291 - **Import code cleanup (Work Towards
292 [dev/core#3414](https://lab.civicrm.org/dev/core/-/issues/3414):
293 [23291](https://github.com/civicrm/civicrm-core/pull/23291))**
294
295 Stop dropping temp table on finish of contact import job.
296
297 - **[Import] Upgrade saved import names for contacts
298 ([23288](https://github.com/civicrm/civicrm-core/pull/23288))**
299
300 Fixes the Contact import such that the name field hold the name of the field
301 being upgraded to rather than the label (and fixes the import such that it
302 expects name going forwards).
303
304 - **[Import] Enotice fix on contact import field mapping screen
305 ([23306](https://github.com/civicrm/civicrm-core/pull/23306))**
306
307 - **[Import] Output errors, duplicates csvs directly from the user job table
308 ([23292](https://github.com/civicrm/civicrm-core/pull/23292))**
309
310 - **Import - fix comment
311 ([23361](https://github.com/civicrm/civicrm-core/pull/23361))**
312
313 - **resolve TypeError: unsupported operand types: string + int;
314 ([23015](https://github.com/civicrm/civicrm-core/pull/23015))**
315
316 - **Ensure tags fields are assigned to tpl for email form test
317 ([23183](https://github.com/civicrm/civicrm-core/pull/23183))**
318
319 - **Don't overescape links in pledge tab
320 ([23206](https://github.com/civicrm/civicrm-core/pull/23206))**
321
322 - **Don't overescape tab links
323 ([23205](https://github.com/civicrm/civicrm-core/pull/23205))**
324
325 - **🪲 🪳 Bug Fix: The option "Enable multiple bulk email address for a contact"
326 does not apply when editing a Contact, only works for inline edit of email
327 addresses ([23082](https://github.com/civicrm/civicrm-core/pull/23082))**
328
329 - **Translation - distinguish between 'On' for date and 'On'/'Off'
330 ([23379](https://github.com/civicrm/civicrm-core/pull/23379))**
331
332 - **getSelfServiceEligibility: fix string translation
333 ([23163](https://github.com/civicrm/civicrm-core/pull/23163))**
334
335 - **Centralise skipColumnHeader to one function (fixes notices, cleans code)
336 ([23135](https://github.com/civicrm/civicrm-core/pull/23135))**
337
338 - **✍🏼 Fix spelling of "additional". Numerous uses of "additonal"
339 ([23162](https://github.com/civicrm/civicrm-core/pull/23162))**
340
341 - **Ensure deleteURL variable for ContactImage.tpl
342 ([23150](https://github.com/civicrm/civicrm-core/pull/23150))**
343
344 - **Don't overescape weights in default-escape mode
345 ([23152](https://github.com/civicrm/civicrm-core/pull/23152))**
346
347 - **Avoid PHP notices on FinancialAccount table
348 ([23151](https://github.com/civicrm/civicrm-core/pull/23151))**
349
350 - **Apply nodefaults to row actions
351 ([23207](https://github.com/civicrm/civicrm-core/pull/23207))**
352
353 - **Add nodefaults to access.tpl
354 ([23208](https://github.com/civicrm/civicrm-core/pull/23208))**
355
356 - **Add nodefaults to group edit form
357 ([23225](https://github.com/civicrm/civicrm-core/pull/23225))**
358
359 - **Add smarty:nodefaults to ManageEvent page.
360 ([23173](https://github.com/civicrm/civicrm-core/pull/23173))**
361
362 - **Add smarty:nodefaults to default.tpl form.
363 ([23153](https://github.com/civicrm/civicrm-core/pull/23153))**
364
365 - **Apply nodefaults to contact tabs for escape-on-output
366 ([23232](https://github.com/civicrm/civicrm-core/pull/23232))**
367
368 - **MultipleRecordFieldsListing.tpl - JS strings should us JS escaping
369 ([23499](https://github.com/civicrm/civicrm-core/pull/23499))**
370
371 ### CiviCampaign
372
373 - **update-supporter-url
374 ([23287](https://github.com/civicrm/civicrm-core/pull/23287))**
375
376 ### CiviCase
377
378 - **Case Resources cuts off at 25 contacts when creating case activity
379 ([dev/core#3431](https://lab.civicrm.org/dev/core/-/issues/3431):
380 [23327](https://github.com/civicrm/civicrm-core/pull/23327))**
381
382 Case activity only has 25 contacts listed from Case Resources in the Send Copy
383 section.
384
385 ### CiviContribute
386
387 - **Paypal pro, a.net ipn - do not update start date, status
388 ([23156](https://github.com/civicrm/civicrm-core/pull/23156))**
389
390 - **Compare currencies as well as amounts on template Contribution change
391 ([23298](https://github.com/civicrm/civicrm-core/pull/23298))**
392
393 - **Start to fix misnamed FinancialTrxn bao
394 ([23190](https://github.com/civicrm/civicrm-core/pull/23190))**
395
396 - **ensure checkbox custom fields on contributions import properly
397 ([23246](https://github.com/civicrm/civicrm-core/pull/23246))**
398
399 - **Always assign pay_later_receipt
400 ([23080](https://github.com/civicrm/civicrm-core/pull/23080))**
401
402 - **Contribution dashboard links work in escape-on-output mode
403 ([23174](https://github.com/civicrm/civicrm-core/pull/23174))**
404
405 - **Improve financial trxn spec to require required fields
406 ([22571](https://github.com/civicrm/civicrm-core/pull/22571))**
407
408 - **Always use cancelSubscription form for cancelling recurring contributions
409 ([23210](https://github.com/civicrm/civicrm-core/pull/23210))**
410
411 - **financialacls core extension uses a global callback in
412 hook_civicrm_container, which might be iffy
413 ([dev/core#3184](https://lab.civicrm.org/dev/core/-/issues/3184):
414 [23268](https://github.com/civicrm/civicrm-core/pull/23268))**
415
416 Definitively load main files during bootstrap.
417
418 - **Fix empty money handling
419 ([23528](https://github.com/civicrm/civicrm-core/pull/23528))**
420
421 Tokens representing money fields will now default to 0 for empty values.
422
423 - **Calculate unit_price based on qty
424 ([23566](https://github.com/civicrm/civicrm-core/pull/23566))**
425
426 This resolves a bug when a template contribution was created for a recurring
427 contribution: the unit_price on the line item was set to match the line_total,
428 ignoring qty.
429
430 ### CiviEvent
431
432 - **batch geocode API does not process event addresses
433 ([dev/core#3439](https://lab.civicrm.org/dev/core/-/issues/3439):
434 [23351](https://github.com/civicrm/civicrm-core/pull/23351))**
435
436 - **Event template scheduled reminders lost when creating a new event using API4
437 ([dev/core#3183](https://lab.civicrm.org/dev/core/-/issues/3183):
438 [23238](https://github.com/civicrm/civicrm-core/pull/23238))**
439
440 - **Scheduled Reminders "Additional Recipients" feature sends at wrong time, is
441 incompatible with tokens
442 ([dev/core#1836](https://lab.civicrm.org/dev/core/-/issues/1836):
443 [23101](https://github.com/civicrm/civicrm-core/pull/23101))**
444
445 - **Event self-service cancel: allow cancelling Waitlist registration
446 ([23164](https://github.com/civicrm/civicrm-core/pull/23164))**
447
448 ### CiviMail
449
450 - **send group subscription welcome email only if template is enabled
451 ([23139](https://github.com/civicrm/civicrm-core/pull/23139))**
452
453 ### CiviMember
454
455 - **Limit issue fix
456 ([23229](https://github.com/civicrm/civicrm-core/pull/23229))**
457
458 Remove limit when printing labels from member search action.
459
460 - **Set default values on MembershipView to stop PHP notices
461 ([22664](https://github.com/civicrm/civicrm-core/pull/22664))**
462
463 ### Drupal Integration
464
465 - **Epic: Drupal 10 readiness (Work Towards
466 [dev/drupal#176](https://lab.civicrm.org/dev/drupal/-/issues/176):
467 [23302](https://github.com/civicrm/civicrm-core/pull/23302))**
468
469 Fixes the 'Error: Class "Symfony\Cmf\Component\Routing\RouteObjectInterface"
470 not found' when using cv in drupal 9 and 10.
471
472 ## <a name="misc"></a>Miscellany
473
474 - **ManagedEntities - Allow targeted reconciliation. Add hook parameter.
475 Simplify logic.
476 ([22959](https://github.com/civicrm/civicrm-core/pull/22959))**
477
478 - **DAOs out of date
479 ([23362](https://github.com/civicrm/civicrm-core/pull/23362))**
480
481 - **[Import] Rename dedupe rule id field from dedupe to dedupe_rule_id field
482 ([23263](https://github.com/civicrm/civicrm-core/pull/23263))**
483
484 - **Add import function to parser
485 ([23338](https://github.com/civicrm/civicrm-core/pull/23338))**
486
487 - **I have no words
488 ([23244](https://github.com/civicrm/civicrm-core/pull/23244))**
489
490 - **Update phpleague/csv from 9.2 to 9.6 (supports php 8)
491 ([dev/core#3172](https://lab.civicrm.org/dev/core/-/issues/3172):
492 [23180](https://github.com/civicrm/civicrm-core/pull/23180))**
493
494 - **Stop adding obsolete currencies to new installs
495 ([23345](https://github.com/civicrm/civicrm-core/pull/23345))**
496
497 - **Managed entity cleanup
498 ([23251](https://github.com/civicrm/civicrm-core/pull/23251))**
499
500 - **Take a reality check on moneyCleaning in test
501 ([23215](https://github.com/civicrm/civicrm-core/pull/23215))**
502
503 - **Minor simplification of getAmountLevelText
504 ([23159](https://github.com/civicrm/civicrm-core/pull/23159))**
505
506 - **Standardise activity datasource text
507 ([23217](https://github.com/civicrm/civicrm-core/pull/23217))**
508
509 - **Standardise participant import text
510 ([23218](https://github.com/civicrm/civicrm-core/pull/23218))**
511
512 - **Standardize DataSource file for Contribution & Membership
513 ([23186](https://github.com/civicrm/civicrm-core/pull/23186))**
514
515 - **Release - Set version compatibility for core extensions when updating core
516 ([23143](https://github.com/civicrm/civicrm-core/pull/23143))**
517
518 - **Make static function static - processCaseTags
519 ([23278](https://github.com/civicrm/civicrm-core/pull/23278))**
520
521 - **Whitespace cleanup in template file
522 ([23277](https://github.com/civicrm/civicrm-core/pull/23277))**
523
524 - **IDE cheer - cast var explicitly to an int
525 ([23350](https://github.com/civicrm/civicrm-core/pull/23350))**
526
527 - **Remove unused variable
528 ([23352](https://github.com/civicrm/civicrm-core/pull/23352))**
529
530 - **Minor function simplification in private function
531 ([23364](https://github.com/civicrm/civicrm-core/pull/23364))**
532
533 - **ManagedEntities - Update version number for mgd-php
534 ([23422](https://github.com/civicrm/civicrm-core/pull/23422))**
535
536 - **Minor readability improvement
537 ([23157](https://github.com/civicrm/civicrm-core/pull/23157))**
538
539 - **Cleanup crmMailing/Templates.js
540 ([23188](https://github.com/civicrm/civicrm-core/pull/23188))**
541
542 - **Further simplify variable retrieval
543 ([23172](https://github.com/civicrm/civicrm-core/pull/23172))**
544
545 - **Remove unused parameter from private function
546 ([23194](https://github.com/civicrm/civicrm-core/pull/23194))**
547
548 - **Remove code only needed by Drupal6
549 ([23212](https://github.com/civicrm/civicrm-core/pull/23212))**
550
551 - **Remove unused function
552 ([23200](https://github.com/civicrm/civicrm-core/pull/23200))**
553
554 - **Remove an unset variable
555 ([23285](https://github.com/civicrm/civicrm-core/pull/23285))**
556
557 - **Remove some copy & paste
558 ([23171](https://github.com/civicrm/civicrm-core/pull/23171))**
559
560 - **Remove another good intention - unused variables
561 ([23275](https://github.com/civicrm/civicrm-core/pull/23275))**
562
563 - **Reduce use of reference
564 ([23165](https://github.com/civicrm/civicrm-core/pull/23165))**
565
566 - **Remove-single-value-loop
567 ([23155](https://github.com/civicrm/civicrm-core/pull/23155))**
568
569 - **[REF] [Import] Use shared file instead of now-identical files
570 ([23216](https://github.com/civicrm/civicrm-core/pull/23216))**
571
572 - **[REF] [Import] Standardise import text for CustomData import
573 ([23219](https://github.com/civicrm/civicrm-core/pull/23219))**
574
575 - **[Ref] [Import] [csv] Remove non-functional code
576 ([23195](https://github.com/civicrm/civicrm-core/pull/23195))**
577
578 - **[REF] [Import] Handle limit with more sanity
579 ([23262](https://github.com/civicrm/civicrm-core/pull/23262))**
580
581 - **[Import] [Ref] Simplify string concatenation
582 ([23330](https://github.com/civicrm/civicrm-core/pull/23330))**
583
584 - **[REF][Import] (minor) Extract getHightlightedFields
585 ([23304](https://github.com/civicrm/civicrm-core/pull/23304))**
586
587 - **[REF] [Import] Obsolete if removal
588 ([23253](https://github.com/civicrm/civicrm-core/pull/23253))**
589
590 - **[REF] [Import] [Custom] Remove another in-between class
591 ([23222](https://github.com/civicrm/civicrm-core/pull/23222))**
592
593 - **[REF] [Import] [Trivial] Minor test fixes
594 ([23341](https://github.com/civicrm/civicrm-core/pull/23341))**
595
596 - **[REF] [Import] Trivial - simplify variable
597 ([23347](https://github.com/civicrm/civicrm-core/pull/23347))**
598
599 - **[REF] [Import] Ensure jobID is set in contact flow
600 ([23280](https://github.com/civicrm/civicrm-core/pull/23280))**
601
602 - **[REF] [Import] call non-deprecated function instead of deprecated
603 ([23293](https://github.com/civicrm/civicrm-core/pull/23293))**
604
605 - **[REF] [Import] [Trivial] Make 'mapper' field available as a submittable
606 value throughout the flow
607 ([23308](https://github.com/civicrm/civicrm-core/pull/23308))**
608
609 - **[REF] [Import] Extract getContactType
610 ([23284](https://github.com/civicrm/civicrm-core/pull/23284))**
611
612 - **[REF] [Import] [Trivial] Make mapperKeys parameter optional in construct
613 ([23307](https://github.com/civicrm/civicrm-core/pull/23307))**
614
615 - **[REF] [Import] [Trivial] Extract duplicate match options
616 ([23300](https://github.com/civicrm/civicrm-core/pull/23300))**
617
618 - **[REF] [Import] Remove another good intention from the import class
619 ([23261](https://github.com/civicrm/civicrm-core/pull/23261))**
620
621 - **[REF] [Import] Stop overloading dataSource form
622 ([23237](https://github.com/civicrm/civicrm-core/pull/23237))**
623
624 - **[REF] [Import] Remove meaningless code
625 ([23242](https://github.com/civicrm/civicrm-core/pull/23242))**
626
627 - **[REF] [Import] remove pointless fini functions.
628 ([23241](https://github.com/civicrm/civicrm-core/pull/23241))**
629
630 - **[REF] [Import] Remove warning count - never returned
631 ([23240](https://github.com/civicrm/civicrm-core/pull/23240))**
632
633 - **[Ref] [Import] Remove another good intention....mapField
634 ([23236](https://github.com/civicrm/civicrm-core/pull/23236))**
635
636 - **[REF] [Import] Remove last in-between parser class
637 ([23227](https://github.com/civicrm/civicrm-core/pull/23227))**
638
639 - **[Ref] [Import] Remove another 'in-between' class
640 ([23221](https://github.com/civicrm/civicrm-core/pull/23221))**
641
642 - **[REF] [Import] [Contact] Remove in-between class
643 ([23223](https://github.com/civicrm/civicrm-core/pull/23223))**
644
645 - **[Ref] [Import] Cleanup cleanup on old tables for form re-submission
646 ([23276](https://github.com/civicrm/civicrm-core/pull/23276))**
647
648 - **[REF] [Import] Trivial - simplify variable
649 ([23360](https://github.com/civicrm/civicrm-core/pull/23360))**
650
651 - **[REF][Import] [Contact] Clean up preview screen
652 ([23340](https://github.com/civicrm/civicrm-core/pull/23340))**
653
654 - **[Import] [Ref] [Contact] Extract row mapping and add test
655 ([23342](https://github.com/civicrm/civicrm-core/pull/23342))**
656
657 - **[Ref] [Import] Add extra functions to DataSource
658 ([23344](https://github.com/civicrm/civicrm-core/pull/23344))**
659
660 - **[REF] [Import] Trivial - simplify variable
661 ([23349](https://github.com/civicrm/civicrm-core/pull/23349))**
662
663 - **(REF) CryptoRegistry - Fix type declaration
664 ([23220](https://github.com/civicrm/civicrm-core/pull/23220))**
665
666 - **[REF] [Import] extract validation functionality
667 ([23371](https://github.com/civicrm/civicrm-core/pull/23371))**
668
669 - **[REF] [Import] Trivial - simplify variables
670 ([23369](https://github.com/civicrm/civicrm-core/pull/23369))**
671
672 - **[Ref] Get rid of private deprecated legacy function
673 ([23375](https://github.com/civicrm/civicrm-core/pull/23375))**
674
675 - **[REF] Do not treat site having a default location type as optional
676 ([23282](https://github.com/civicrm/civicrm-core/pull/23282))**
677
678 - **[REF] Minor code simplifcation - reduce silly lines
679 ([23368](https://github.com/civicrm/civicrm-core/pull/23368))**
680
681 - **[REF] [Import] Remove unused tpl assign showColNames
682 ([23366](https://github.com/civicrm/civicrm-core/pull/23366))**
683
684 - **[Import] [Ref] [Minor] Simplify error handling with a try-catch block
685 ([23370](https://github.com/civicrm/civicrm-core/pull/23370))**
686
687 - **[Ref][Import] Remove another good intention - random email counting
688 ([23367](https://github.com/civicrm/civicrm-core/pull/23367))**
689
690 - **[REF] [Import] Simplify dataSource contract - remove unused preProcess
691 ([23272](https://github.com/civicrm/civicrm-core/pull/23272))**
692
693 - **[REF] [Import] Trivial - simplify variables
694 ([23363](https://github.com/civicrm/civicrm-core/pull/23363))**
695
696 - **(REF) Fix test to use full flow
697 ([23160](https://github.com/civicrm/civicrm-core/pull/23160))**
698
699 - **[REF] Extract getContributionRecurID
700 ([23158](https://github.com/civicrm/civicrm-core/pull/23158))**
701
702 - **[REF] [Import] Stop passing submittedValues as parameters
703 ([23343](https://github.com/civicrm/civicrm-core/pull/23343))**
704
705 - **[REF] [Import] Remove another good intention - import 'conflicts'
706 ([23380](https://github.com/civicrm/civicrm-core/pull/23380))**
707
708 - **[REF] Code cleanup on location entities for the Contact Summary screen
709 ([22967](https://github.com/civicrm/civicrm-core/pull/22967))**
710
711 - **[REF] Fix test to use form flow / helper
712 ([23211](https://github.com/civicrm/civicrm-core/pull/23211))**
713
714 - **[REF][Test] Update loadMappingTest to use form flow
715 ([23286](https://github.com/civicrm/civicrm-core/pull/23286))**
716
717 - **[REF] Do not pass form properties within the form
718 ([23213](https://github.com/civicrm/civicrm-core/pull/23213))**
719
720 - **(NFC) authx - Update descriptions and links in `info.xml`
721 ([23169](https://github.com/civicrm/civicrm-core/pull/23169))**
722
723 - **(NFC) mixin/**.php - Add @since tags
724 ([23423](https://github.com/civicrm/civicrm-core/pull/23423) and
725 [23440](https://github.com/civicrm/civicrm-core/pull/23440))**
726
727 - **(NFC) Skip CliRunnerTest on php80+drush+Backdrop
728 ([23184](https://github.com/civicrm/civicrm-core/pull/23184))**
729
730 - **NFC Minor cleanup to Participant confirm
731 ([23357](https://github.com/civicrm/civicrm-core/pull/23357))**
732
733 - **[NFC] Fix APIv4 docblock annotations for Managed API
734 ([23359](https://github.com/civicrm/civicrm-core/pull/23359))**
735
736 - **E2E_Core_ErrorTest - Demonstrate whether error pages are well-formed
737 ([23257](https://github.com/civicrm/civicrm-core/pull/23257))**
738
739 - **(E2E) `testErrorChrome` - Update assertions for page-chrome
740 ([23397](https://github.com/civicrm/civicrm-core/pull/23397))**
741
742 - **(E2E) testErrorChrome - Skip Backdrop and D8+ (much like D7)
743 ([23398](https://github.com/civicrm/civicrm-core/pull/23398))**
744
745 ## <a name="credits"></a>Credits
746
747 This release was developed by the following code authors:
748
749 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
750 Benjamin W; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Pradeep
751 Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop
752 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb
753 van den Dool; Ginkgo Street Labs - Michael Z Daryabeygi; iXiam - Luciano
754 Spiegel; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Joinery -
755 Allen Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone
756 Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive
757 Technology Project - Jamie McClelland; Third Sector Design - Kurund Jalmi;
758 Wikimedia Foundation - Eileen McNaughton
759
760 Most authors also reviewed code for this release; in addition, the following
761 reviewers contributed their comments:
762
763 Andreas Howiller; Andy Burns; Artful Robot - Rich Lott; Australian Greens - John
764 Twyman; Betty Dolfing; Christian Wach; Circle Interactive - Dave Jenkins, Matt
765 Trim; CiviCoop - Jaap Jansma; iXiam - Vangelis Pantazis; JMA Consulting - Edsel
766 Lopez; John Kingsnorth; Joinery - Allen Shaw; Nicol Wistreich; Tadpole
767 Collective - Kevin Cristiano
768
769 ## <a name="feedback"></a>Feedback
770
771 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
772 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
773 and contact `@agh1`.