Merge pull request #23809 from eileenmcnaughton/invoice_recur
[civicrm-core.git] / release-notes / 5.48.0.md
index 1280e6e1060e0039b63ceb3597a2147b2ae9ce44..03128cbe3d5c54c3f80b85d0c02c051371590da2 100644 (file)
@@ -13,352 +13,607 @@ Released April 6, 2022
 
 | *Does this version...?*                                         |         |
 |:--------------------------------------------------------------- |:-------:|
-| Fix security vulnerabilities?                                   |         |
-| Change the database schema?                                     |         |
-| Alter the API?                                                  |         |
-| Require attention to configuration options?                     |         |
-| Fix problems installing or upgrading to a previous version?     |         |
-| Introduce features?                                             |         |
-| Fix bugs?                                                       |         |
+| Fix security vulnerabilities?                                   |   no    |
+| **Change the database schema?**                                 | **yes** |
+| **Alter the API?**                                              | **yes** |
+| Require attention to configuration options?                     |   no    |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
 
 ## <a name="features"></a>Features
 
 ### Core CiviCRM
 
-- **crm- Missing Summary ([70](https://github.com/civicrm/civicrm-drupal-8/pull/70))**
+- **Add civicrm_admin_ui extension
+  ([22628](https://github.com/civicrm/civicrm-core/pull/22628))**
 
-## <a name="bugs"></a>Bugs resolved
+  Adds a new bundled extension `civicrm_admin_ui`. This extension replaces 2
+  screens with SearchDisplay Afforms: Custom field groups and Custom fields.
 
-### Core CiviCRM
+- **Add deprecation notice to APIv3 Explorer
+  ([22811](https://github.com/civicrm/civicrm-core/pull/22811))**
 
-- **dev/core#3119 - Post-upgrade messages no longer being displayed ([22985](https://github.com/civicrm/civicrm-core/pull/22985))**
+  Adds a notice to the APIv3 explorer to encourage users to use APIv4 instead.
 
-- **[REF] Update Guzzlehttp/psr7 version to be 1.8.5 ([22998](https://github.com/civicrm/civicrm-core/pull/22998))**
+- **Apiv4 entity parity (Work Towards
+  [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
+  [22754](https://github.com/civicrm/civicrm-core/pull/22754),
+  [22823](https://github.com/civicrm/civicrm-core/pull/22823),
+  [22624](https://github.com/civicrm/civicrm-core/pull/22624) and
+  [22799](https://github.com/civicrm/civicrm-core/pull/22799))**
 
-- **Afform - Fix saving and editing entity blocks ([22963](https://github.com/civicrm/civicrm-core/pull/22963))**
+  Adds "Extension", "Mailing", "MailingGroup" and "MailingJob" entities to
+  APIv4.
 
-- **dev/core#3126 - CiviReport statistics appearing twice on page ([22976](https://github.com/civicrm/civicrm-core/pull/22976))**
+- **APIv4 - Add tableName to Entity.get output
+  ([22829](https://github.com/civicrm/civicrm-core/pull/22829))**
 
-- **(Regression) - fixed tags form field display on New/Edit contact screen ([22964](https://github.com/civicrm/civicrm-core/pull/22964))**
+  Adds `tableName` to the APIv4 Entity.get action output, improving
+  flexibility for virtual entities.
 
-- **Return array for setdefaults ([22948](https://github.com/civicrm/civicrm-core/pull/22948))**
+- **APIv4 Explorer - Add REST syntax
+  ([22722](https://github.com/civicrm/civicrm-core/pull/22722))**
 
-- **[REF] Rename SoftDeleteEntity -> SoftDeleteActionTrait ([22944](https://github.com/civicrm/civicrm-core/pull/22944))**
+  Displays REST syntax in the APIv4 Explorer.
 
-- **Fix backward-compatability for new method in CRM_Contact_BAO_Query_Hook ([22933](https://github.com/civicrm/civicrm-core/pull/22933))**
+- **APIv4 - Add metadata about class args
+  ([22831](https://github.com/civicrm/civicrm-core/pull/22831))**
 
-- **dev/core#3112 Clear caches to avoid error on upgrade ([22932](https://github.com/civicrm/civicrm-core/pull/22932))**
+  The CustomValue API is a virtual entity, where multiple api entities all get
+  routed to the same class by virtue of all sharing the prefix "Custom_" and
+  pass a class arg to the php factory functions e.g.
+  CustomValue::get('MyCustomGroup').
 
-- **Afform Gui - Fix selecting html element of text box ([22929](https://github.com/civicrm/civicrm-core/pull/22929))**
+  Instead of hard-coding this idea into the API Explorer now it's part of the
+  entity metadata so that other APIs, notaby ECK, can use a similar pattern.
 
-- **(NFC) contributor-key.yml - Fix syntax error ([22921](https://github.com/civicrm/civicrm-core/pull/22921))**
+- **APIv4 Explorer - Add "copy" button to quickly copy code to clipboard
+  ([22896](https://github.com/civicrm/civicrm-core/pull/22896))**
 
-- **Don't perform event timezone check if CiviEvent is disabled ([22898](https://github.com/civicrm/civicrm-core/pull/22898))**
+  Makes it easy to select and copy generated APIv4 Explorer code.
 
-- **CiviGrant - Don't auto-create any grant types ([22913](https://github.com/civicrm/civicrm-core/pull/22913))**
+- **SearchKit - Update APIv3 Extension.get to use APIv4
+  ([22788](https://github.com/civicrm/civicrm-core/pull/22788))**
 
-- **dev/core#3100 - Remove grant leftovers from core xml. Remove empty grant reports menu ([22911](https://github.com/civicrm/civicrm-core/pull/22911))**
+  Updates SearchKit code to use newer version of the API when calling
+  Extension.get.
 
-- **Only acl line items based on contribution ([22870](https://github.com/civicrm/civicrm-core/pull/22870))**
+- **SearchKit - Use crmDialogButtons for task popups
+  ([22790](https://github.com/civicrm/civicrm-core/pull/22790))**
 
-- **dev/core#3094 - Crash on contribution view when don't have event/participant permissions ([22865](https://github.com/civicrm/civicrm-core/pull/22865))**
+  Updates the buttons in SearchKit action popups to use standard dialog button
+  formatting.
 
-- **dev/core#3104 - Crash when viewing a contact page - Call to undefined method CRM_Contact_Page_View_Summary::addExpectedSmartyVariables() ([22897](https://github.com/civicrm/civicrm-core/pull/22897))**
+- **SearchKit - Add 'merge contacts' task
+  ([22768](https://github.com/civicrm/civicrm-core/pull/22768) and
+  [23035](https://github.com/civicrm/civicrm-core/pull/23035))**
 
-- **Refresh entity list after updating custom group (self_hook_*)  ([22868](https://github.com/civicrm/civicrm-core/pull/22868))**
+  Adds a "merge contacts" task to SearchKit.
 
-- **APIv4 Explorer - Add "copy" button to quicly copy code to clipboard ([22896](https://github.com/civicrm/civicrm-core/pull/22896))**
+- **SearchKit - Customizable "No Results" text
+  ([22770](https://github.com/civicrm/civicrm-core/pull/22770))**
 
-- **smarty/php notices on contribution view part 4 ([22894](https://github.com/civicrm/civicrm-core/pull/22894))**
+  Makes it so users can customize the "No Results" text in SearchKit.
 
-- **Mark AJAX methods as static ([22895](https://github.com/civicrm/civicrm-core/pull/22895))**
+- **SearchKit - Improve import UI to handle update & preview the import
+  ([22699](https://github.com/civicrm/civicrm-core/pull/22699))**
 
-- **Avoid e-notices on pages with tabs ([22892](https://github.com/civicrm/civicrm-core/pull/22892))**
+  SearchKit has an import/export SavedSearch feature which allows you to
+  copy/paste api code in JSON format. This change enables update as well as create,
+  and improves that UI to give better user feedback about what will happen when
+  the import is run.
 
-- **5.47 ([22891](https://github.com/civicrm/civicrm-core/pull/22891))**
+- **SearchKit - Support relative dates and datepicker with the DATE() sql fn
+  ([22783](https://github.com/civicrm/civicrm-core/pull/22783))**
 
-- **ManagedEntities - Allow "match" param to convert existing records to … ([22883](https://github.com/civicrm/civicrm-core/pull/22883))**
+  Allows one to pick a relative or calendar date in conjunction with the DATE
+  ONLY field transformation.
 
-- **5.47 ([22888](https://github.com/civicrm/civicrm-core/pull/22888))**
+- **Civi\Api4\Queue - Allow use with hook_managed
+  ([22796](https://github.com/civicrm/civicrm-core/pull/22796))**
 
-- **5.47 ([22884](https://github.com/civicrm/civicrm-core/pull/22884))**
+  Flags the entity Queue so that it can be used with hook_managed.
 
-- **Contact token should show contact's info instead of logged in contact ([22874](https://github.com/civicrm/civicrm-core/pull/22874))**
+- **Define more usable queue DX for multithreaded background work (Work Towards
+  [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
+  [22812](https://github.com/civicrm/civicrm-core/pull/22812))**
 
-- **Bump karma from 6.3.14 to 6.3.16 ([22875](https://github.com/civicrm/civicrm-core/pull/22875))**
+  Expands the schema for civicrm_queue (et al). By configuring properties on
+  civicrm_queue (et al), you can tell a generic queue-agent how to handle items
+  from this queue.
 
-- **php/smarty notices on contribution view part 2 ([22869](https://github.com/civicrm/civicrm-core/pull/22869))**
+- **ManagedEntities - Allow "match" param to convert existing records to …
+  ([22883](https://github.com/civicrm/civicrm-core/pull/22883))**
 
-- **added as a contributor ([22876](https://github.com/civicrm/civicrm-core/pull/22876))**
+  This can help ease the pain of declaring managed entities which may or may not
+  already exist - now they can be matched by name or other unique identifier.
 
-- **Call to undefined function civicrm_api3_create_error() in civicrm/civ… ([22872](https://github.com/civicrm/civicrm-core/pull/22872))**
+- **Database update from 5.47.2 to 5.47.3 fails with a non en_US database.
+  ([dev/core#3135](https://lab.civicrm.org/dev/core/-/issues/3151):
+  [23063](https://github.com/civicrm/civicrm-core/pull/23063))**  
 
-- **Format money on transaction list ([22438](https://github.com/civicrm/civicrm-core/pull/22438))**
+### CiviContribute
 
-- **5.47 ([22873](https://github.com/civicrm/civicrm-core/pull/22873))**
+- **Add basic contribution example base for contribution workflows
+  ([22636](https://github.com/civicrm/civicrm-core/pull/22636))**
 
-- **(NFC) LoggingDetailTest - Improve reliability of test ([22867](https://github.com/civicrm/civicrm-core/pull/22867))**
+  Makes it so that one can preview Contribution Message Templates.
 
-- **php notices on contributionview ([22866](https://github.com/civicrm/civicrm-core/pull/22866))**
+- **Remove time component from the {contribution.receive_date} token
+  ([dev/core#3072](https://lab.civicrm.org/dev/core/-/issues/3072):
+  [23071](https://github.com/civicrm/civicrm-core/pull/23071))**
 
-- **5.47 ([22859](https://github.com/civicrm/civicrm-core/pull/22859))**
+### CiviEvent
 
-- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day ([22860](https://github.com/civicrm/civicrm-core/pull/22860))**
+- **Introduce a way to link event participants from the associated booking.
+  ([dev/user-interface#45](https://lab.civicrm.org/dev/user-interface/-/issues/45):
+  [22732](https://github.com/civicrm/civicrm-core/pull/22732))**
 
-- **Add handling for civimember disabled ([22864](https://github.com/civicrm/civicrm-core/pull/22864))**
+  Introduces a way to navigate to participants from the contribution view.
 
-- **(dev/core#1304) Queues - Define schema for runner, run_count, lease_time, et al ([22812](https://github.com/civicrm/civicrm-core/pull/22812))**
+### CiviMail
 
-- **5.47 ([22857](https://github.com/civicrm/civicrm-core/pull/22857))**
+- **Mailing - Add `serialize` and `add` to `template_options` field
+  ([22785](https://github.com/civicrm/civicrm-core/pull/22785))**
 
-- **fixes report#85 - Don't crash Contact Logging Detail report when viewing a contribution ([22242](https://github.com/civicrm/civicrm-core/pull/22242))**
+  Improves the mailing schema metadata for template_options and template_type
+  fields.
 
-- **dev/core#2100 Improve A/B test report page and API Mailing stats ([20093](https://github.com/civicrm/civicrm-core/pull/20093))**
+- **Start phasing out 'preferred_mail_format' (Work Towards
+  [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
+  [22775](https://github.com/civicrm/civicrm-core/pull/22775),
+  [22633](https://github.com/civicrm/civicrm-core/pull/22633) and
+  [22635](https://github.com/civicrm/civicrm-core/pull/22635))**
 
-- **5.47 ([22852](https://github.com/civicrm/civicrm-core/pull/22852))**
+  Ignores preferred mail format when sending a message. Instead sends both html
+  and plain text versions and lets the email client decide which to show.
+  Removes `preferred_mail_format` from email trait.
 
-- **dev/user-interface#45 Show associated participants on contributionView form ([22732](https://github.com/civicrm/civicrm-core/pull/22732))**
+### Drupal Integraton
 
-- **Fix API4 Explorer undefined variable error ([22849](https://github.com/civicrm/civicrm-core/pull/22849))**
+- **civicrm.drush.inc - Add 'civicrm-pipe' subcommand
+  ([70](https://github.com/civicrm/civicrm-drupal-8/pull/70))**
 
-- **Avoid PHP undefined index notices on extension pages ([22848](https://github.com/civicrm/civicrm-core/pull/22848))**
+  Adds support for the subcommand `drush civicrm-pipe` (`drush cvpipe`).
 
-- **[NFC] Basic case create test with org ([22846](https://github.com/civicrm/civicrm-core/pull/22846))**
+## <a name="bugs"></a>Bugs resolved
 
-- **Fix issues with PHP GetText and 0 length files ([22842](https://github.com/civicrm/civicrm-core/pull/22842))**
+### Core CiviCRM
 
-- **Remove reference to undefined variable in CRM_Contact_Form_Inline_CommunicationPreferences ([22840](https://github.com/civicrm/civicrm-core/pull/22840))**
+- **Update DOMPDF to 1.2.1 and update composer-compile-plugin as per master
+  ([23102](https://github.com/civicrm/civicrm-core/pull/23102))**
 
-- **Mark methods which are only used statically as static ([22844](https://github.com/civicrm/civicrm-core/pull/22844))**
+- **Contact Logging Detail report crashes when a contribution and contact are
+  updated together
+  ([dev/report#85](https://lab.civicrm.org/dev/report/-/issues/85):
+  [22242](https://github.com/civicrm/civicrm-core/pull/22242))**
 
-- **APIv4 - Add metadata about class args ([22831](https://github.com/civicrm/civicrm-core/pull/22831))**
+- **Warning: is_dir(): open_basedir restriction in effect
+  ([dev/core#2927](https://lab.civicrm.org/dev/core/-/issues/2927):
+  [22277](https://github.com/civicrm/civicrm-core/pull/22277))**
 
-- **Cody tidy in CRM_Core_State ([22841](https://github.com/civicrm/civicrm-core/pull/22841))**
+  Avoids flooding logs with `open_basedir` in effect.
 
-- **5.47 ([22838](https://github.com/civicrm/civicrm-core/pull/22838))**
+- **Filter summary no longer appearing on results for Reports
+  ([dev/core#3153](https://lab.civicrm.org/dev/core/-/issues/3153):
+  [23086](https://github.com/civicrm/civicrm-core/pull/23086))**
 
-- **Remove reference to undefined variable ([22839](https://github.com/civicrm/civicrm-core/pull/22839))**
+- **Switch extension downloader and extensions feed to use Guzzle HTTP library
+  ([21097](https://github.com/civicrm/civicrm-core/pull/21097))**
 
-- **CiviCase - Call hooks when creating relationships ([22814](https://github.com/civicrm/civicrm-core/pull/22814))**
+  This fixes some situations (eg. shared servers with open_basedir restrictions
+  in effect) where zip file was not downloaded properly and extension could not
+  be updated. It also means that we are no longer using our custom
+  CRM_Utils_HttpClient::fetch() function from within civicrm core.
 
-- **5.47 ([22836](https://github.com/civicrm/civicrm-core/pull/22836))**
+- **RC Error: Call to undefined method
+  CRM_Contact_Page_View_Summary::addExpectedSmartyVariables()
+  ([dev/core#3104](https://lab.civicrm.org/dev/core/-/issues/3104):
+  [22897](https://github.com/civicrm/civicrm-core/pull/22897))**
 
-- **Move HookInterface to \Civi\Core namespace ([22834](https://github.com/civicrm/civicrm-core/pull/22834))**
+- **Post-upgrade messages no longer being displayed
+  ([dev/core#3119](https://lab.civicrm.org/dev/core/-/issues/3119):
+  [22985](https://github.com/civicrm/civicrm-core/pull/22985))**
 
-- **APIv4 - Add tableName to Entity.get output ([22829](https://github.com/civicrm/civicrm-core/pull/22829))**
+- **CiviReport - Title and Statistics appearing at top and bottom of reports
+  ([dev/core#3126](https://lab.civicrm.org/dev/core/-/issues/3126):
+  [22976](https://github.com/civicrm/civicrm-core/pull/22976))**
 
-- **Fix submit handling of thousands when creating data entry batch ([22772](https://github.com/civicrm/civicrm-core/pull/22772))**
+- **APIv4 - Fix setting/getting a multi-record customfield with date+time
+  ([22731](https://github.com/civicrm/civicrm-core/pull/22731))**
 
-- **APIv4 - Add fixme about filtering custom fields by sub-type ([22827](https://github.com/civicrm/civicrm-core/pull/22827))**
+- **APIv4 - Fix typo in Entity.getFields
+  ([22776](https://github.com/civicrm/civicrm-core/pull/22776))**
 
-- **Flush the metadata cache when the domain is edited ([22637](https://github.com/civicrm/civicrm-core/pull/22637))**
+- **Fix apiv4 Contribution delete & all line items
+  ([22749](https://github.com/civicrm/civicrm-core/pull/22749))**
 
-- **Fixes for smarty grumpy mode with membership ([22752](https://github.com/civicrm/civicrm-core/pull/22752))**
+- **Fix API4 Explorer undefined variable error
+  ([22849](https://github.com/civicrm/civicrm-core/pull/22849))**
 
-- **Enotice fixes ([22719](https://github.com/civicrm/civicrm-core/pull/22719))**
+- **Afform - Fix saving and editing entity blocks
+  ([22963](https://github.com/civicrm/civicrm-core/pull/22963),
+  [22986](https://github.com/civicrm/civicrm-core/pull/22986), and
+  [23104](https://github.com/civicrm/civicrm-core/pull/23104))**
 
-- **Mailing Report: do not recalculate the recipients when the count is zero ([22800](https://github.com/civicrm/civicrm-core/pull/22800))**
+- **Afform Gui - Fix selecting html element of text box
+  ([22929](https://github.com/civicrm/civicrm-core/pull/22929))**
 
-- **[REF] APIv4 - use entityTypes event to load custom records ([22824](https://github.com/civicrm/civicrm-core/pull/22824))**
+- **Afform - fix missing submit actions
+  ([23024](https://github.com/civicrm/civicrm-core/pull/23024))**
 
-- **Fix the "since" version for api v4 Mailing and MailingJob ([22823](https://github.com/civicrm/civicrm-core/pull/22823))**
+- **SearchKit - Fix support for non-DAO entities
+  ([22764](https://github.com/civicrm/civicrm-core/pull/22764))**
 
-- **5.47 ([22822](https://github.com/civicrm/civicrm-core/pull/22822))**
+- **Fix deleting afforms when deleting saved search
+  ([22997](https://github.com/civicrm/civicrm-core/pull/22997))**
 
-- **Recent update to {receipt_text} token gives warning in system check after upgrade ([22821](https://github.com/civicrm/civicrm-core/pull/22821))**
+  A typo in the code was preventing afforms from being deleted with a
+  corresponding saved search, and may have led to afforms being deleted
+  incorrectly.
 
-- **add checkPerm ([22818](https://github.com/civicrm/civicrm-core/pull/22818))**
+- **SearchKit - Fix multi-valued afform filters
+  ([23012](https://github.com/civicrm/civicrm-core/pull/23012))**
 
-- **[REF] Remove unused api v2 function ([22819](https://github.com/civicrm/civicrm-core/pull/22819))**
+  Fixes a SearchKit regression causing multi-select afform filters to stop
+  working.
 
-- **[NFC] Rename RecurForms test class ([22820](https://github.com/civicrm/civicrm-core/pull/22820))**
+- **Search Kit: Unable to Aggregate on a Custom Field
+  ([dev/core#3143](https://lab.civicrm.org/dev/core/-/issues/3143):
+  [23070](https://github.com/civicrm/civicrm-core/pull/23070))**
 
-- **[REF] Cleanup docblocks & unused vars in Membership BAO ([22665](https://github.com/civicrm/civicrm-core/pull/22665))**
+- **Only acl line items based on contribution
+  ([22870](https://github.com/civicrm/civicrm-core/pull/22870))**
 
-- **Added Cancel Recur Subscription test & setter for `supports` on Dummy processor ([21895](https://github.com/civicrm/civicrm-core/pull/21895))**
+  Ensures ACL query on line items only joins `entity_id` to contributions.
 
-- **Revert membership debug handling in IPN ([22475](https://github.com/civicrm/civicrm-core/pull/22475))**
+- **Add handling for civimember disabled
+  ([22864](https://github.com/civicrm/civicrm-core/pull/22864))**
 
-- **Cleanup on Offline Membership Receipts (ensures variables present across flows) ([22736](https://github.com/civicrm/civicrm-core/pull/22736))**
+- **Revert membership debug handling in IPN
+  ([22475](https://github.com/civicrm/civicrm-core/pull/22475))**
 
-- **APIv4 - remove unnecessary field from System::check ([22748](https://github.com/civicrm/civicrm-core/pull/22748))**
+- **Format money in custom fields once, on the tpl layer
+  ([22728](https://github.com/civicrm/civicrm-core/pull/22728))**
 
-- **Add deprecation notice to APIv3 Explorer ([22811](https://github.com/civicrm/civicrm-core/pull/22811))**
+- **New Individual: Unfilled fields "Custom Email Greeting", "Custom Postal
+  Greeting", "Custom Addressee" are hidden
+  ([dev/core#483](https://lab.civicrm.org/dev/core/-/issues/483):
+  [22380](https://github.com/civicrm/civicrm-core/pull/22380))**
 
-- **SearchKit - Use crmDialogButtons for task popups ([22790](https://github.com/civicrm/civicrm-core/pull/22790))**
+- **Fix regression with flexible merging of contact information
+  ([22720](https://github.com/civicrm/civicrm-core/pull/22720))**
 
-- **[REF] Fix css code style issues ([22807](https://github.com/civicrm/civicrm-core/pull/22807))**
+- **Recent update to {receipt_text} token gives warning in system check after
+  upgrade ([22821](https://github.com/civicrm/civicrm-core/pull/22821))**
 
-- **Civi\Api4\Queue - Allow use with hook_managed ([22796](https://github.com/civicrm/civicrm-core/pull/22796))**
+- **Remove "Search Builder" from menubar on new installs.
+  ([22778](https://github.com/civicrm/civicrm-core/pull/22778))**
 
-- **APIv4 - Add MailingGroup API ([22799](https://github.com/civicrm/civicrm-core/pull/22799))**
+- **Pseudoconstants - Fix and improve handling of option callbacks
+  ([22730](https://github.com/civicrm/civicrm-core/pull/22730))**
 
-- **Remove broken call to function_exists in CRM_Utils_String::isUtf8 ([22803](https://github.com/civicrm/civicrm-core/pull/22803))**
+- **Refresh entity list after updating custom group (self_hook_*)
+  ([22868](https://github.com/civicrm/civicrm-core/pull/22868))**
 
-- **5.47 ([22798](https://github.com/civicrm/civicrm-core/pull/22798))**
+- **Avoid null column showing on groups search page
+  ([22724](https://github.com/civicrm/civicrm-core/pull/22724))**
 
-- **Fix pledge default on contribution page when the site has a WR for "contribution" ([22801](https://github.com/civicrm/civicrm-core/pull/22801))**
+- **Call to undefined function civicrm_api3_create_error() in
+  civicrm/civicrm/CRM/Core/Page/AJAX/Attachment.php:65
+  ([22872](https://github.com/civicrm/civicrm-core/pull/22872))**
 
-- **dev/core#2486 Add v4 Mailing api (+ MailingJob) ([22624](https://github.com/civicrm/civicrm-core/pull/22624))**
+- **Fix backward-compatability for new method in CRM_Contact_BAO_Query_Hook
+  ([22933](https://github.com/civicrm/civicrm-core/pull/22933))**
 
-- **(REF) CRM_Queue_Queue_* - Retain a copy of `$queueSpec` ([22797](https://github.com/civicrm/civicrm-core/pull/22797))**
+- **Fix submit handling of thousands when creating data entry batch
+  ([22772](https://github.com/civicrm/civicrm-core/pull/22772))**
 
-- **(NFC) tests/phpunit/CRM/Queue - Add common `@group` ([22795](https://github.com/civicrm/civicrm-core/pull/22795))**
+- **Avoid PHP undefined index notices on extension pages
+  ([22848](https://github.com/civicrm/civicrm-core/pull/22848))**
 
-- **(REF) CRM_Queue_Task - Tighter signature ([22794](https://github.com/civicrm/civicrm-core/pull/22794))**
+- **Fix issues with PHP GetText and 0 length files
+  ([22842](https://github.com/civicrm/civicrm-core/pull/22842))**
 
-- **[REF] Remove old require_once statements made obsolete by autoloader ([22792](https://github.com/civicrm/civicrm-core/pull/22792))**
+- **Remove reference to undefined variable in
+  CRM_Contact_Form_Inline_CommunicationPreferences
+  ([22840](https://github.com/civicrm/civicrm-core/pull/22840))**
 
-- **Fix regression with flexible merging of contact information ([22720](https://github.com/civicrm/civicrm-core/pull/22720))**
+- **Mark methods which are only used statically as static
+  ([22844](https://github.com/civicrm/civicrm-core/pull/22844))**
 
-- **SearchKit - Update APIv3 Extension.get to use APIv4 ([22788](https://github.com/civicrm/civicrm-core/pull/22788))**
+- **Use valid syntax for self-closing br elements
+  ([22711](https://github.com/civicrm/civicrm-core/pull/22711))**
 
-- **REF Deprecate API3 _ipn_process_transaction() ([22488](https://github.com/civicrm/civicrm-core/pull/22488))**
+- **civicrm_handler_filter_pseudo_constant - Guard against old or inactive
+  pseudoconstants ([656](https://github.com/civicrm/civicrm-drupal/pull/656))**
 
-- **Cleanup on contribution view ([22698](https://github.com/civicrm/civicrm-core/pull/22698))**
+- **Contact token should show contact's info instead of logged in contact
+  ([22874](https://github.com/civicrm/civicrm-core/pull/22874))**
 
-- **SearchKit - Support relative dates and datepicker with the DATE() sql fn ([22783](https://github.com/civicrm/civicrm-core/pull/22783))**
+- **Fixes fatal error - function doesn't exist
+  ([275](https://github.com/civicrm/civicrm-wordpress/pull/275))**
 
-- **5.47 ([22789](https://github.com/civicrm/civicrm-core/pull/22789))**
+- **Notice fixes ([22706](https://github.com/civicrm/civicrm-core/pull/22706))**
 
-- **Update unit test to use exception ([22787](https://github.com/civicrm/civicrm-core/pull/22787))**
+- **Some more notice fixes in smarty
+  ([22745](https://github.com/civicrm/civicrm-core/pull/22745))**
 
-- **Mailing - Add `serialize` and `add` to `template_options` field ([22785](https://github.com/civicrm/civicrm-core/pull/22785))**
+- **Enotice fixes
+  ([22719](https://github.com/civicrm/civicrm-core/pull/22719))**
 
-- **RecurForms test fixes ([22784](https://github.com/civicrm/civicrm-core/pull/22784))**
+- **Enotice fix ([22707](https://github.com/civicrm/civicrm-core/pull/22707))**
 
-- **BAO_Mailing::create - stop passing by reference ([22753](https://github.com/civicrm/civicrm-core/pull/22753))**
+- **Mark AJAX methods as static
+  ([22895](https://github.com/civicrm/civicrm-core/pull/22895))**
 
-- **Move check for mailing workflow permisisons to BAO layer ([22766](https://github.com/civicrm/civicrm-core/pull/22766))**
+- **Avoid e-notices on pages with tabs
+  ([22892](https://github.com/civicrm/civicrm-core/pull/22892))**
 
-- **5.47 ([22782](https://github.com/civicrm/civicrm-core/pull/22782))**
+- **Flush the metadata cache when the domain is edited
+  ([22637](https://github.com/civicrm/civicrm-core/pull/22637))**
 
-- **Remove "Search Builder" from menubar on new installs. ([22778](https://github.com/civicrm/civicrm-core/pull/22778))**
+- **Remove broken call to function_exists in CRM_Utils_String::isUtf8
+  ([22803](https://github.com/civicrm/civicrm-core/pull/22803))**
 
-- **Avoid null column showing on groups search page ([22724](https://github.com/civicrm/civicrm-core/pull/22724))**
+- **Avoid PHP notices on the UF settings page.
+  ([22667](https://github.com/civicrm/civicrm-core/pull/22667))**
 
-- **Avoid PHP notices on the UF settings page. ([22667](https://github.com/civicrm/civicrm-core/pull/22667))**
+- **Fix deprecated warnings, smary grumpy-mode issues in legacy searches
+  ([22742](https://github.com/civicrm/civicrm-core/pull/22742))**
 
-- **SearchKit - Add 'merge contacts' task ([22768](https://github.com/civicrm/civicrm-core/pull/22768))**
+- **Return array for setdefaults
+  ([22948](https://github.com/civicrm/civicrm-core/pull/22948))**
 
-- **5.47 to master ([22780](https://github.com/civicrm/civicrm-core/pull/22780))**
+### CiviCase
 
-- **APiv4 - Add Extension.get ([22754](https://github.com/civicrm/civicrm-core/pull/22754))**
+- **CiviCase - Call hooks when creating relationships
+  ([22814](https://github.com/civicrm/civicrm-core/pull/22814))**
 
-- **[REF] - Deprecate & delegate BAO::retrieve functions ([22543](https://github.com/civicrm/civicrm-core/pull/22543))**
+  Ensures hooks are called when creating case relationships.
 
-- **dev/core#2927 - Avoid flooding logs with open_basedir in effect ([22277](https://github.com/civicrm/civicrm-core/pull/22277))**
+### CiviContribute
 
-- **dev/core#2866 Ignore preferred mail format when sending message ([22633](https://github.com/civicrm/civicrm-core/pull/22633))**
+- **Bypass grumpy mode for contribution search totals & criteria
+  ([22744](https://github.com/civicrm/civicrm-core/pull/22744))**
 
-- **Follow up fix on removing preferred_mail_format ([22775](https://github.com/civicrm/civicrm-core/pull/22775))**
+- **Clean return values for dummy payment processor
+  ([22679](https://github.com/civicrm/civicrm-core/pull/22679))**
 
-- **APIv4 - Fix typo in Entity.getFields ([22776](https://github.com/civicrm/civicrm-core/pull/22776))**
+- **Adjust css class for payment processor to use `-`
+  ([22763](https://github.com/civicrm/civicrm-core/pull/22763))**
 
-- **Fix apiv4 Contribution delete & all line items ([22749](https://github.com/civicrm/civicrm-core/pull/22749))**
+- **Fix pledge default on contribution page when the site has a WR for
+  "contribution" ([22801](https://github.com/civicrm/civicrm-core/pull/22801))**
 
-- **dev/core#2866 Remove preferred_mail_format from email trait ([22635](https://github.com/civicrm/civicrm-core/pull/22635))**
+- **Format money on transaction list
+  ([22438](https://github.com/civicrm/civicrm-core/pull/22438))**
 
-- **Pseudoconstants - Fix and improve handling of option callbacks ([22730](https://github.com/civicrm/civicrm-core/pull/22730))**
+- **Deprecate civicrm_contribution_recur.trxn_id
+  ([21539](https://github.com/civicrm/civicrm-core/pull/21539))**
 
-- **[REF] Results of running npm audit fix ([22773](https://github.com/civicrm/civicrm-core/pull/22773))**
+- **php notices on contributionview
+  ([22866](https://github.com/civicrm/civicrm-core/pull/22866))**
 
-- **SearchKit - Customizable "No Results" text ([22770](https://github.com/civicrm/civicrm-core/pull/22770))**
+- **php/smarty notices on contribution view part 2
+  ([22869](https://github.com/civicrm/civicrm-core/pull/22869))**
 
-- **Deprecate civicrm_contribution_recur.trxn_id ([21539](https://github.com/civicrm/civicrm-core/pull/21539))**
+- **smarty/php notices on contribution view part 4
+  ([22894](https://github.com/civicrm/civicrm-core/pull/22894))**
 
-- **Clean return values for dummy payment processor ([22679](https://github.com/civicrm/civicrm-core/pull/22679))**
+- **Cleanup on contribution view
+  ([22698](https://github.com/civicrm/civicrm-core/pull/22698))**
 
-- **[REF] Simplification in Contact::getValues ([22765](https://github.com/civicrm/civicrm-core/pull/22765))**
+- **Contribution view page crashes if you don't have event permissions
+  ([dev/core#3094](https://lab.civicrm.org/dev/core/-/issues/3094):
+  [22865](https://github.com/civicrm/civicrm-core/pull/22865))**
 
-- **SearchKit - Fix support for non-DAO entities ([22764](https://github.com/civicrm/civicrm-core/pull/22764))**
+### CiviEvent
 
-- **Some more notice fixes in smarty ([22745](https://github.com/civicrm/civicrm-core/pull/22745))**
+- **Don't perform event timezone check if CiviEvent is disabled
+  ([22898](https://github.com/civicrm/civicrm-core/pull/22898))**
 
-- **Adjust css class for payment processor to use `-` ([22763](https://github.com/civicrm/civicrm-core/pull/22763))**
+## CiviGrant
 
-- **Cleanup around taxTerm assignment ([22422](https://github.com/civicrm/civicrm-core/pull/22422))**
+- **CiviGrant - Don't auto-create any grant types
+  ([22913](https://github.com/civicrm/civicrm-core/pull/22913))**
 
-- **[REF] Simplify Location::getValues ([22757](https://github.com/civicrm/civicrm-core/pull/22757))**
+- **Grant checkbox in display prefs does nothing anymore
+  ([dev/core#3159](https://lab.civicrm.org/dev/core/-/issues/3159):
+  [23105](https://github.com/civicrm/civicrm-core/pull/23105))**
 
-- **Remove unused parameter, pass-by-ref ([22756](https://github.com/civicrm/civicrm-core/pull/22756))**
+- **Views - CiviGrant is now an extension
+  ([654](https://github.com/civicrm/civicrm-drupal/pull/654))**
 
-- **[REF] Fix issue where spaces in payment_processor_type.name field cau… ([22760](https://github.com/civicrm/civicrm-core/pull/22760))**
+  Updates the Drupal Views integration to recognize that CiviGrant is now an
+  extension.
 
-- **Bump karma from 6.3.4 to 6.3.14 ([22758](https://github.com/civicrm/civicrm-core/pull/22758))**
+### CiviMail
 
-- **Bump ajv from 6.6.1 to 6.12.6 ([22761](https://github.com/civicrm/civicrm-core/pull/22761))**
+- **Move check for mailing workflow permisisons to BAO layer
+  ([22766](https://github.com/civicrm/civicrm-core/pull/22766))**
 
-- **[REF] Cleanup billingBlock.js ([22713](https://github.com/civicrm/civicrm-core/pull/22713))**
+- **BAO_Mailing::create - stop passing by reference
+  ([22753](https://github.com/civicrm/civicrm-core/pull/22753))**
 
-- **Format money in custom fields once, on the tpl layer ([22728](https://github.com/civicrm/civicrm-core/pull/22728))**
+- **add checkPerm
+  ([22818](https://github.com/civicrm/civicrm-core/pull/22818))**
 
-- **5.47 ([22743](https://github.com/civicrm/civicrm-core/pull/22743))**
+  Adds checkPerm to crmMailingSimpleDirective, enables ability of permission
+  checking in composer mail.
 
-- **Bypass grumpy mode for contribution search totals & criteria ([22744](https://github.com/civicrm/civicrm-core/pull/22744))**
+- **A/B testing report should show unique opens, not total opens
+  ([dev/core#2100](https://lab.civicrm.org/dev/core/-/issues/2100):
+  [20093](https://github.com/civicrm/civicrm-core/pull/20093))**
 
-- **Move acl check for contributionView to the extension ([22684](https://github.com/civicrm/civicrm-core/pull/22684))**
+- **Mailing Report: do not recalculate the recipients when the count is zero
+  ([22800](https://github.com/civicrm/civicrm-core/pull/22800))**
 
-- **Fix deprecated warnings, smary grumpy-mode issues in legacy searches ([22742](https://github.com/civicrm/civicrm-core/pull/22742))**
+- **5.44+ Unsubscribe from Smart Group form generates excessive process load
+  ([dev/core#3031](https://lab.civicrm.org/dev/core/-/issues/3031):
+  [23051](https://github.com/civicrm/civicrm-core/pull/23051))**
 
-- **5.47 ([22738](https://github.com/civicrm/civicrm-core/pull/22738))**
+  This splits the select query in two when checking if a contact was subscribed
+  to one or more groups.
 
-- **5.47 ([22735](https://github.com/civicrm/civicrm-core/pull/22735))**
+### CiviMember
 
-- **Add civicrm_admin_ui extension ([22628](https://github.com/civicrm/civicrm-core/pull/22628))**
+- **New Membership fails when price set present but not selected
+  ([dev/core#3134](https://lab.civicrm.org/dev/core/-/issues/3134):
+  [23027](https://github.com/civicrm/civicrm-core/pull/23027))**
 
-- **APIv4 - Fix setting/getting a multi-record customfield with date+time ([22731](https://github.com/civicrm/civicrm-core/pull/22731))**
+- **Fixes for smarty grumpy mode with membership
+  ([22752](https://github.com/civicrm/civicrm-core/pull/22752))**
 
-- **Move financial acls for membership to extension ([22677](https://github.com/civicrm/civicrm-core/pull/22677))**
+- **Cleanup on Offline Membership Receipts (ensures variables present across
+  flows) ([22736](https://github.com/civicrm/civicrm-core/pull/22736))**
 
-- **APIv4 Explorer - Add REST syntax ([22722](https://github.com/civicrm/civicrm-core/pull/22722))**
+## <a name="misc"></a>Miscellany
 
-- **Show customised fields on load, if customised option selected. ([22380](https://github.com/civicrm/civicrm-core/pull/22380))**
+- **Move acl check for contributionView to the extension
+  ([22684](https://github.com/civicrm/civicrm-core/pull/22684))**
 
-- **[NFC] Batch entry - Avoid warnings when performing math on empty string. ([22715](https://github.com/civicrm/civicrm-core/pull/22715))**
+- **Move financial acls for membership to extension
+  ([22677](https://github.com/civicrm/civicrm-core/pull/22677))**
 
-- **5.47 ([22723](https://github.com/civicrm/civicrm-core/pull/22723))**
+- **APIv4 - remove unnecessary field from System::check
+  ([22748](https://github.com/civicrm/civicrm-core/pull/22748))**
 
-- **dev/core#3057 - follow-up to fix civigrant info.xml version number in master ([22721](https://github.com/civicrm/civicrm-core/pull/22721))**
+- **APIv4 - Add fixme about filtering custom fields by sub-type
+  ([22827](https://github.com/civicrm/civicrm-core/pull/22827))**
 
-- **5.47 ([22718](https://github.com/civicrm/civicrm-core/pull/22718))**
+- **Cleanup around taxTerm assignment
+  ([22422](https://github.com/civicrm/civicrm-core/pull/22422))**
 
-- **SearchKit - Improve import UI to handle update & preview the import ([22699](https://github.com/civicrm/civicrm-core/pull/22699))**
+- **RecurForms test fixes
+  ([22784](https://github.com/civicrm/civicrm-core/pull/22784))**
 
-- **Switch extension downloader and extensions feed to use Guzzle HTTP library ([21097](https://github.com/civicrm/civicrm-core/pull/21097))**
+- **Update unit test to use exception
+  ([22787](https://github.com/civicrm/civicrm-core/pull/22787))**
 
-- **REF - Use function to get component name from permission ([22688](https://github.com/civicrm/civicrm-core/pull/22688))**
+- **Added Cancel Recur Subscription test & setter for `supports` on Dummy
+  processor ([21895](https://github.com/civicrm/civicrm-core/pull/21895))**
 
-- **Use valid syntax for self-closing br elements ([22711](https://github.com/civicrm/civicrm-core/pull/22711))**
+- **Move HookInterface to \Civi\Core namespace
+  ([22834](https://github.com/civicrm/civicrm-core/pull/22834))**
 
-- **Add basic contribution example base for contribution workflows ([22636](https://github.com/civicrm/civicrm-core/pull/22636))**
+- **Cody tidy in CRM_Core_State
+  ([22841](https://github.com/civicrm/civicrm-core/pull/22841))**
 
-- **Notice fixes ([22706](https://github.com/civicrm/civicrm-core/pull/22706))**
+- **Remove reference to undefined variable
+  ([22839](https://github.com/civicrm/civicrm-core/pull/22839))**
 
-- **Enotice fix ([22707](https://github.com/civicrm/civicrm-core/pull/22707))**
+- **added as a contributor
+  ([22876](https://github.com/civicrm/civicrm-core/pull/22876))**
 
-- **civicrm_handler_filter_pseudo_constant - Guard against old or inactive pseudoconstants ([656](https://github.com/civicrm/civicrm-drupal/pull/656))**
+- **Remove unused parameter, pass-by-ref
+  ([22756](https://github.com/civicrm/civicrm-core/pull/22756))**
 
-- **Views - CiviGrant is now an extension ([654](https://github.com/civicrm/civicrm-drupal/pull/654))**
+- **Bump karma from 6.3.14 to 6.3.16
+  ([22875](https://github.com/civicrm/civicrm-core/pull/22875))**
 
-- **Remove unit tests based on older framework ([71](https://github.com/civicrm/civicrm-drupal-8/pull/71))**
+- **Bump karma from 6.3.4 to 6.3.14
+  ([22758](https://github.com/civicrm/civicrm-core/pull/22758))**
 
-- **Fixes fatal error - function doesn't exist ([275](https://github.com/civicrm/civicrm-wordpress/pull/275))**
+- **Bump ajv from 6.6.1 to 6.12.6
+  ([22761](https://github.com/civicrm/civicrm-core/pull/22761))**
 
-- **5.47 ([274](https://github.com/civicrm/civicrm-wordpress/pull/274))**
+- **Remove unit tests based on older framework
+  ([71](https://github.com/civicrm/civicrm-drupal-8/pull/71))**
 
-## <a name="misc"></a>Miscellany
+- **REF - Use function to get component name from permission
+  ([22688](https://github.com/civicrm/civicrm-core/pull/22688))**
+
+- **[REF] Simplify Location::getValues
+  ([22757](https://github.com/civicrm/civicrm-core/pull/22757))**
+
+- **[REF] Fix issue where spaces in payment_processor_type.name field cau…
+  ([22760](https://github.com/civicrm/civicrm-core/pull/22760))**
+
+- **[REF] Cleanup billingBlock.js
+  ([22713](https://github.com/civicrm/civicrm-core/pull/22713))**
+
+- **[REF] Results of running npm audit fix
+  ([22773](https://github.com/civicrm/civicrm-core/pull/22773))**
+
+- **[REF] - Deprecate & delegate BAO::retrieve functions
+  ([22543](https://github.com/civicrm/civicrm-core/pull/22543))**
+
+- **REF Deprecate API3 _ipn_process_transaction()
+  ([22488](https://github.com/civicrm/civicrm-core/pull/22488))**
+
+- **(REF) CRM_Queue_Queue_* - Retain a copy of `$queueSpec`
+  ([22797](https://github.com/civicrm/civicrm-core/pull/22797))**
+
+- **(REF) CRM_Queue_Task - Tighter signature
+  ([22794](https://github.com/civicrm/civicrm-core/pull/22794))**
+
+- **[REF] Remove old require_once statements made obsolete by autoloader
+  ([22792](https://github.com/civicrm/civicrm-core/pull/22792))**
+
+- **[REF] Simplification in Contact::getValues
+  ([22765](https://github.com/civicrm/civicrm-core/pull/22765))**
+
+- **[REF] Fix css code style issues
+  ([22807](https://github.com/civicrm/civicrm-core/pull/22807))**
+
+- **[REF] Remove unused api v2 function
+  ([22819](https://github.com/civicrm/civicrm-core/pull/22819))**
+
+- **[REF] Update Guzzlehttp/psr7 version to be 1.8.5
+  ([22998](https://github.com/civicrm/civicrm-core/pull/22998))**
+
+- **[REF] Rename SoftDeleteEntity -> SoftDeleteActionTrait
+  ([22944](https://github.com/civicrm/civicrm-core/pull/22944))**
+
+- **[REF] APIv4 - use entityTypes event to load custom records
+  ([22824](https://github.com/civicrm/civicrm-core/pull/22824))**
+
+- **[REF] Cleanup docblocks & unused vars in Membership BAO
+  ([22665](https://github.com/civicrm/civicrm-core/pull/22665))**
+
+- **(NFC) tests/phpunit/CRM/Queue - Add common `@group`
+  ([22795](https://github.com/civicrm/civicrm-core/pull/22795))**
+
+- **[NFC] Rename RecurForms test class
+  ([22820](https://github.com/civicrm/civicrm-core/pull/22820))**
+
+- **[NFC] Batch entry - Avoid warnings when performing math on empty string.
+  ([22715](https://github.com/civicrm/civicrm-core/pull/22715))**
+
+- **(NFC) contributor-key.yml - Fix syntax error
+  ([22921](https://github.com/civicrm/civicrm-core/pull/22921))**
+
+- **(NFC) LoggingDetailTest - Improve reliability of test
+  ([22867](https://github.com/civicrm/civicrm-core/pull/22867))**
+
+- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day
+  ([22860](https://github.com/civicrm/civicrm-core/pull/22860))**
+
+- **[NFC] Basic case create test with org
+  ([22846](https://github.com/civicrm/civicrm-core/pull/22846))**
 
 ## <a name="credits"></a>Credits
 
 This release was developed by the following code authors:
 
-AGH Strategies - Alice Frumin, Andie Hunt; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; Fuzion - Luke Stewart; Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Registered Nurses' Association of Ontario - Ian Wilson; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+AGH Strategies - Alice Frumin, Andie Hunt; BrightMinded Ltd - Bradley
+Taylor;Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman
+Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Luke Stewart;
+Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee;
+John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon
+Goldberg; MJW Consulting - Matthew Wire; Registered Nurses' Association of
+Ontario - Ian Wilson; Tadpole Collective - Kevin Cristiano; Wikimedia
+Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
 
 Most authors also reviewed code for this release; in addition, the following
 reviewers contributed their comments:
 
-Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan Dixon; Bluehorn Digital - Matt Glaman; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Luke Stewart; Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Semper IT - Karin Gerritsen; Skvare - Mark Hanna; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan
+Dixon; Bluehorn Digital - Matt Glaman; CiviCoop - Jaap Jansma; CiviDesk -
+Yashodha Chaku; Progressive Technology Project - Jamie McClelland; Semper IT -
+Karin Gerritsen; Skvare - Mark Hanna
 
 ## <a name="feedback"></a>Feedback