CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-04-22T16:22:22Zhttps://lab.civicrm.org/dev/core/-/issues/3382Data from custom fields is not stored in event but in event template2022-04-22T16:22:22ZoseidelData from custom fields is not stored in event but in event templateWhen creating a new event using an event template which includes custom fields, the data entered in the custom fields won't be stored in the event itself when clicking the 'Continue'-button, but are stored in the event template. After cl...When creating a new event using an event template which includes custom fields, the data entered in the custom fields won't be stored in the event itself when clicking the 'Continue'-button, but are stored in the event template. After clicking 'Continue' and then going back to the 'Info and Settings'-tab all data entered in the custom fields is gone. However, the data can be found in the used event template now. By going into edit mode the data is set in the template's custom fields and will be prefilled in the next event generated using this template.
This issue might be conneted to this one: [Core Issue 766](https://lab.civicrm.org/dev/core/-/issues/766)
See also a related post on [stackexchange](https://civicrm.stackexchange.com/questions/20709/new-event-from-template-does-not-copy-custom-fields)
Notice that custom field are 'only' lost in this cases, while it gets stored in the template in this one.
Steps to reproduce:
1. Set up fresh Joomla instance (V. 3.9.26 at the time of writing)
2. Install latest CiviCRM for Joomla (V. 5.37.2 at the time of writing)
3. Create a new set of custom fields (I've been using text, date and select inputs in my tests)
4. Create a new event template and fill out all necessary inputs (I've also entered something in the title, summary and description).
5. Create a new event using the newly created template. Enter something in all necessary fields as well as in the custom fields.
6. Click 'Continue'
7. Return to 'Info and Settings' - the data entered in the custom fields is gone :/
8. Open the template in edit mode. The custom data we previously entered in the event is here now
This issue can be reproduced in CiviCRM 5.37.0 and 5.37.2, but not in 5.36.1 used in the [Joomla Demo](https://cividemo.com/).
I've been using the following environments to test: AMPPS 3.9 and XAMPP (compile date 4-6-21) with PHP 7.3.
As I'm only using CiviCRM inside Joomla I haven't testet whether this issue also appears in other CMS- or the standalone-version.
A possible workaround for the problem is to skip entering something in the custom fields in Step 5 but doing so in Step 7. The contents of custom fields are saved correctly now. However, another strange behaviour occurs now: If there is any content of the custom fields already set in the template (e.g. if a field is set as required), this data is missing in the event using the template. Even in fields marked as required - the content set in the template is just gone.5.39.0https://lab.civicrm.org/dev/core/-/issues/3319Creating a relationship fails when a related membership has a contact referen...2022-04-22T16:17:01ZjaapjansmaCreating a relationship fails when a related membership has a contact reference custom field.**How to reproduce?**
1. Create a new membership type. Set **Relationship type** to Employer of
2. Create a custom field set for this membership type
3. Add a custom field of type Contact Reference
4. Create a new organization
5. Add th...**How to reproduce?**
1. Create a new membership type. Set **Relationship type** to Employer of
2. Create a custom field set for this membership type
3. Add a custom field of type Contact Reference
4. Create a new organization
5. Add the membership and fill in a value at the custom field
6. Now add a **Employer of** relationship between this organization and an Individual, press save
**Expected results**
Relationship gets saved and a related membership is created with the correct value for the custom field
**Actual results**
No relationship is created, no error is shown, the civicrm logo stays on the screen turning around.
Also when refreshing the page an error popups with something: **custom_xx is not a valid integer**
**Extra information**
When debuging this issue I disovered that a `Membership.get` api is used. And those values are passed to a `Membership.create` api call. The paramaters for the custom field have the format of `custom_xx = 'Joe'` and `custom_xx_id = 202`5.39.0jaapjansmajaapjansmahttps://lab.civicrm.org/dev/core/-/issues/26495.39 upgrade is not re-runnable and forces utf8mb42021-06-13T04:43:12ZDaveD5.39 upgrade is not re-runnable and forces utf8mb4It includes a step to create a translation table that should check if the table exists first. Also it forces utf8mb4 but I don't think we've said that's required yet?It includes a step to create a translation table that should check if the table exists first. Also it forces utf8mb4 but I don't think we've said that's required yet?5.39.0https://lab.civicrm.org/dev/core/-/issues/2636AuthX extension: user_load() deprecated in Drupal 8.x.2021-06-04T00:46:50ZfsnetAuthX extension: user_load() deprecated in Drupal 8.x.Overview
----------------------------------------
The AuthX extension is not usable with Drupal 9 since user_load() is deprecated in Drupal 8.x and removed in 9.x.
Reproduction steps
----------------------------------------
1. Enable Au...Overview
----------------------------------------
The AuthX extension is not usable with Drupal 9 since user_load() is deprecated in Drupal 8.x and removed in 9.x.
Reproduction steps
----------------------------------------
1. Enable AuthX extension.
2. Send HTTP request with username/password .
Current behaviour
----------------------------------------
Fails with
```
Error: Call to undefined function Civi\Authx\user_load() in Civi\Authx\Drupal8->loginStateless()
```
Expected behaviour
----------------------------------------
User is loaded without errors.
Environment information
----------------------------------------
* __CiviCRM:__ _5.37.2_
* __CMS:__ _Drupal 9.1.9_
Comments
----------------------------------------
user_load() needs to be replaced with \Drupal\user\Entity\User::load().5.39.0https://lab.civicrm.org/dev/core/-/issues/2614Sample payment processor types are misaligned in the sample data2021-05-15T21:47:26ZDaveDSample payment processor types are misaligned in the sample datae.g. on dmaster.demo.civicrm.org it says Elavon is configured when it's supposed to be the dummy processor, and then when you edit it it says it's authorize.net, presumably because the id doesn't match up and it's just picking the first ...e.g. on dmaster.demo.civicrm.org it says Elavon is configured when it's supposed to be the dummy processor, and then when you edit it it says it's authorize.net, presumably because the id doesn't match up and it's just picking the first in the list.
I'm thinking this is a regression from some payment processor type rearranging but I think it's only affecting the sample data.5.39.0https://lab.civicrm.org/dev/core/-/issues/2613Useradd task gives a deprecation notice for the password confirmation field2021-05-19T21:47:08ZDaveDUseradd task gives a deprecation notice for the password confirmation field```
Deprecated function: Function create_function() is deprecated in HTML_QuickForm_Rule_Compare->validate() (line 87 of ...\vendor\civicrm\civicrm-packages\HTML\QuickForm\Rule\Compare.php).
HTML_QuickForm_Rule_Compare->validate(Array, ...```
Deprecated function: Function create_function() is deprecated in HTML_QuickForm_Rule_Compare->validate() (line 87 of ...\vendor\civicrm\civicrm-packages\HTML\QuickForm\Rule\Compare.php).
HTML_QuickForm_Rule_Compare->validate(Array, '===') (Line: 158)
HTML_QuickForm_RuleRegistry->validate('compare', Array, NULL, 1) (Line: 1580)
HTML_QuickForm->validate() (Line: 591)
CRM_Core_Form->validate() (Line: 126)
CRM_Core_StateMachine->perform(Object, 'next', 'Next') (Line: 43)
CRM_Core_QuickForm_Action_Next->perform(Object, 'next') (Line: 203)
HTML_QuickForm_Controller->handle(Object, 'next') (Line: 103)
HTML_QuickForm_Page->handle('next') (Line: 352)
CRM_Core_Controller->run() (Line: 35)
CRM_Contact_Page_View_Useradd->run(Array, NULL) (Line: 313)
```
To reproduce:
1. Use 5.36 or earlier, or you'll see it again after https://github.com/civicrm/civicrm-core/pull/20274.
2. View a contact.
3. From the actions menu choose Create User Record.
4. Fill it out and save.
It's deprecated in php 7.2 and will be removed in php 8.
There's two obvious ways to fix this:
1. Just doing a quickie search, this form is the only place the quickform "compare" rule is used. So just replace it with a local formRule that just does "is it equal".
2. Patch quickform to update this rule.
Either way is about the same amount of work I think, so leaning towards choice 1.5.39.0https://lab.civicrm.org/dev/core/-/issues/2606My Cases dashlet no longer working (javascript network error - blank dashlet)2021-05-12T19:47:09ZDaveDMy Cases dashlet no longer working (javascript network error - blank dashlet)I'm pretty sure it's something from https://github.com/civicrm/civicrm-core/pull/18969 which was just committed yesterday. Looking into it.I'm pretty sure it's something from https://github.com/civicrm/civicrm-core/pull/18969 which was just committed yesterday. Looking into it.5.39.0https://lab.civicrm.org/dev/core/-/issues/2602Installer doesn't check mysql version properly2021-05-10T00:07:08ZDaveDInstaller doesn't check mysql version properly1. Try to install latest civi on mariadb 5.5.68
2. It says "ok" during the system requirements check even though it supposedly is looking for 5.6.5+.
3. Continuing to install crashes.
It appears to be comparing against a non-existent va...1. Try to install latest civi on mariadb 5.5.68
2. It says "ok" during the system requirements check even though it supposedly is looking for 5.6.5+.
3. Continuing to install crashes.
It appears to be comparing against a non-existent variable `$min`.5.39.0https://lab.civicrm.org/dev/core/-/issues/2593PayPal fails to create contribution following duplicate merge when membership...2021-05-30T22:18:59ZseamusleePayPal fails to create contribution following duplicate merge when membership record has been deletedWhilst JMA was reviewing the data on a client system we found that a number of PayPal IPN recurring contributions had not been recorded. A decent number of them were not recorded because it seems we hit this line https://github.com/civic...Whilst JMA was reviewing the data on a client system we found that a number of PayPal IPN recurring contributions had not been recorded. A decent number of them were not recorded because it seems we hit this line https://github.com/civicrm/civicrm-core/blob/068c4e1acb11a4f9c6d5d6f01e0003a12156d363/CRM/Contribute/BAO/Contribution.php#L4412 . The situation seems to have been that perhaps a duplicate membership had been created somewhere along the road but had been subsequently deleted.
I would suggest that the fact that a contribution may have a membership id associated with it but we can no longer find the associated membership should not be a reason that the IPN shouldn't be processed.
Example log messages
```
Feb 09 2021 08:19:28 [debug] PayPalIPN: Received (ContactID: xxxx; trxn_id: zzzzzzzz).
Feb 09 2021 08:19:28 [debug] PayPalIPN: Received payment for membership tttt. Original contribution was hhh. The template for this contribution is nnnit is linked to 0payments for this membership. It has 1 line items linked to this membership. it is expected the original contribution will be linked by both entities to the membership.
Feb 09 2021 08:19:28 [debug] PayPalIPN: Membership should be linked to contribution recur record hhhh 1links found
Feb 09 2021 08:19:28 [error] $Fatal Error Details = array:3 [ "message" => "Could not find membership record: ttt"
```
@JoeMurray @eileen5.39.0https://lab.civicrm.org/dev/core/-/issues/2516Fix invalidate cache for smart groups2021-06-01T01:09:41ZscardiniusFix invalidate cache for smart groupsOverview
----------------------------------------
Method CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache() is described as touching smart groups but there is no condition for smart groups.
Current behaviour
-------------...Overview
----------------------------------------
Method CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache() is described as touching smart groups but there is no condition for smart groups.
Current behaviour
----------------------------------------
This query is called for all groups.
Proposed behaviour
----------------------------------------
Limit to smart group
Comments
----------------------------------------
Current behaviour produced too much traffic on database (deadlocks).5.39.0scardiniusscardiniushttps://lab.civicrm.org/dev/core/-/issues/2480Group filtering in search kit2021-06-17T03:25:47ZeileenGroup filtering in search kitI'm deliberately framing this issue as group filtering because group filtering has 99% of the gains and 2% of the complexity of adding group support to search kit / apiv4.
**History**
In the beginning there were groups are smart groups ...I'm deliberately framing this issue as group filtering because group filtering has 99% of the gains and 2% of the complexity of adding group support to search kit / apiv4.
**History**
In the beginning there were groups are smart groups and you could search on them.
There was no `group_contact_cache` table. It was possible to see 'hard' groups on the groups tab but it
was not possible to see smart groups. People asked to be able to see smart groups. Lobo said no.
Around 4.2 there was a sponsored 'improvement' to revert Lobo's 'no'. The group contact cache was added so that it was possible to populate all the smart groups and find out what group a contact was in.
Also around 4.2 and pretty much as soon as the new feature dropped a setting was added to allow sites to turn off the ability to see smart groups on the group tab because it was killing their sites.
Since 4.2 people have struggled with smart group cache performance, and lots of patches have been merged to try to address it.
Also since 4.2 people have been frustrated that there are very few places where you can access the smart groups a contact belongs to - we have had requests to show this on exports and my contact dashboard. However we switched back to the 'no' approach on this because it kills medium+ sizes sites.
More recently it has become effectively possible to turn off the smart group caching again by setting the time out to 0 and turning off opportunistic cache clearing. This is the approach I use and cautiously recommend.
**Smart groups, groups and performance**
So we have 3 things
1) which groups has someone actively been added to
2) which are the contacts that THIS saved search / smart group finds
3) of all the many many searches saved on this site which groups would find a person
Because we UI-conflate groups & smart groups we also conflate 3 into 1 & 2. I think there is a use-case for 3 but for most sites it is not worth the performance hit. We can deliver 1 & 2 in a performant way by following our existing code practices - most notably the one that made reports work ie:
If there is a group filter in play then
1) resolve the group filter to a list of relevant smart groups
2) create a temporary table of all the contacts in those groups (potentially but not necessarily using the `group_contact_cache`)
3) Use the table as the base ie `SELECT * FROM my_temp_table INNER JOIN civicrm_contact .....`
**Should we bypass the group contact cache?**
Probably codewise it's easier to populate it first because we have code that does. However, I have pretty strong doubts that it is very often effectively pre-populated before a query on a particular group runs.
There is a cron to prepopulate smart groups - on some sites this might make sense to use. My recommendation remains 'don't unless you have tested on your site'
**Could we filter off the saved search directly**
Yeah this is an interesting idea - add in a saved search rather than a group. Could be powerful. Let's keep pondering
**How would it look**
`Contact::get()->setWhere('group_id', 'IN', [8,7,89]);`
Note for not in we wouldn't be able to do the Base table inner join trick & TBH we can get the tests & contract right before we do any sort of optimisation5.39.0https://lab.civicrm.org/dev/core/-/issues/2479Loss of translation when copying (cloning) entities (multilingual)2021-06-09T21:46:53ZsamuelsovLoss of translation when copying (cloning) entities (multilingual)In a multilingual installation, copying/cloning of entities (like events) always result in a loss of the non-primary language.
For example, cloning a translated event in a English/French installation will result in having all the french ...In a multilingual installation, copying/cloning of entities (like events) always result in a loss of the non-primary language.
For example, cloning a translated event in a English/French installation will result in having all the french fields getting the english value of the original field.
It is particularly annoying when there are a lot of fields to (re)translate, i.e. :
- profile
- events
Also, not really a cloning but adding a translated custom field to a profile gives the same result.5.39.0https://lab.civicrm.org/dev/core/-/issues/2412Allow Entities within Afform to reference each other for values2021-07-02T03:13:28ZseamusleeAllow Entities within Afform to reference each other for valuesProposal:
To allow Entities to reference each other to get the relevant values to be used by afform:
Example:
Create an Afform that has Individual Fields but also you want to create an Activity with it, Allow for the source_contact_id...Proposal:
To allow Entities to reference each other to get the relevant values to be used by afform:
Example:
Create an Afform that has Individual Fields but also you want to create an Activity with it, Allow for the source_contact_id field to be set to something like `Individual1.id` or similar which is then translated in the save process to the appropriate id
Perhaps initially this should just be limited to ID fields I'm not sure. I'm thinking that we would probably have to come up with a angular way of dynamically populating the list of known fields about the other entity and then in the Save pass through an array of created Entities but this may also need to do some work on working through the logic i.e. ensure that Individual is created before the Activity for instance
@colemanw @eileen @totten @JoeMurray5.39.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/2408Search kit - filter by groups2021-07-03T00:09:20ZeileenSearch kit - filter by groupsOn testing our first search-off-the-block with search kit I had some pretty bad performance issues (it didn't load). We used to have the same issue with CiviReport until I did some performance work which basically did the following
1) c...On testing our first search-off-the-block with search kit I had some pretty bad performance issues (it didn't load). We used to have the same issue with CiviReport until I did some performance work which basically did the following
1) created a temporary table of all the contact in the filtered group/s
2) used that table as the base table ie SELECT * FROM tempTABLE as hidden_table INNER JOIN civicrm_contact a ON a.id = hidden_table.id
3) told our users to always include a group filter in any reports
I worry that our thinking about how to 'properly' solve the groups issue might be blocking us from 'a solution that works as well as our existing searches/reports' - which could have some pretty big constraints on what is permitted (ie. you can filter by membership in specific group ids but that's it - which is pretty much all that works well currently) - as long as the api signature is OK-ish we can change what is under the hood later
Note the report in question was a Lybunt but the above does pretty much apply to all our reports
@totten @colemanw @seamuslee5.39.0https://lab.civicrm.org/dev/core/-/issues/2369Fatal error reported when photo cannot be found2021-05-31T15:47:08Zmagnolia61Fatal error reported when photo cannot be foundI use a profile for people to update their profile picture.
For some reason when their photo is not available anymore the error log logs a fatal error.
Also the reporterror extension sends an email on this but of course that's out of cor...I use a profile for people to update their profile picture.
For some reason when their photo is not available anymore the error log logs a fatal error.
Also the reporterror extension sends an email on this but of course that's out of core scope (reported it [there](https://lab.civicrm.org/extensions/reporterror/-/issues/3#note_53134) also)
I have been experiencing this since quite a few versions of CiviCRM back. Currently running 5.34 (Drupal 7.78)
Could it be that the code for this in core is a bit too harsh?
```
[error]
$Fatal Error Details = array:3 [
"message" => "Photo does not exist"
"code" => null
"exception" => CRM_Core_Exception {#3616
-errorData: array:1 [
"error_code" => 0
]
#cause: null
-_trace: null
#message: "Photo does not exist"
#code: 0
#file: "/var/www/vhosts/xyz/web/sites/all/modules/civicrm/CRM/Contact/Page/ImageFile.php"
#line: 58
trace: {
/var/www/vhosts/xyz/web/sites/all/modules/civicrm/CRM/Contact/Page/ImageFile.php:58 {
› else {
› throw new CRM_Core_Exception(ts('Photo does not exist'));
› }
}
/var/www/vhosts/xyz/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:312 { …}
/var/www/vhosts/xyz/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:68 { …}
/var/www/vhosts/xyz/web/sites/all/modules/civicrm/CRM/Core/Invoke.php:36 { …}
/var/www/vhosts/xyz/web/sites/all/modules/civicrm/drupal/civicrm.module:458 { …}
/var/www/vhosts/xyz/web/includes/menu.inc:527 { …}
/var/www/vhosts/xyz/web/index.php:21 { …}
}
}
]
```5.39.0https://lab.civicrm.org/dev/core/-/issues/2187Allow for the default number of search results to be configurable2021-09-07T10:20:35ZseamusleeAllow for the default number of search results to be configurableOverview
----------------------------------------
At the present moment the default number of results to be returned on a search is hard coded to 50 in `CRM/Utils/Pager.php` this should ideally be configurable using settings
Example use...Overview
----------------------------------------
At the present moment the default number of results to be returned on a search is hard coded to 50 in `CRM/Utils/Pager.php` this should ideally be configurable using settings
Example use-case
----------------------------------------
A site wants to show 100 contacts / memberships / grants etc on a screen at a time rather than 50
Current behaviour
----------------------------------------
Hard coded default value of 50
Proposed behaviour
----------------------------------------
Create a setting to handle the default value and set it on various search forms.5.39.0https://lab.civicrm.org/dev/core/-/issues/2071Mandatory keys check fails erroneously for float 0.0 value in civicrm_api3_ve...2021-05-21T04:01:28ZorigamiusaMandatory keys check fails erroneously for float 0.0 value in civicrm_api3_verify_mandatory()Overview
----------------------------------------
The mandatory keys check in function `civicrm_api3_verify_mandatory()` fails erroneously if the key exists but it has the floating-point value of 0.0.
Reproduction steps
----------------...Overview
----------------------------------------
The mandatory keys check in function `civicrm_api3_verify_mandatory()` fails erroneously if the key exists but it has the floating-point value of 0.0.
Reproduction steps
----------------------------------------
Using APIv3, create an entity that contains a required key with the floating-point value of 0.0, for example, line_total in a price field element.
Current behaviour
----------------------------------------
APIv3 throws a `Mandatory key(s) missing from params array:` exception.
Expected behaviour
----------------------------------------
Successful creation.
Environment information
----------------------------------------
* __Browser:__ _Safari_
* __CiviCRM:__ _5.29.1_
* __PHP:__ _7.3.9__
* __CMS:__ _Drupal 7.73_
Comments
----------------------------------------
To fix, in civicrm/api/v3/utils.php, change line 92 from
```
if (!array_key_exists($key, $params) || (empty($params[$key]) && $params[$key] !== 0 && $params[$key] !== '0')) {
```
to
```
if (!array_key_exists($key, $params) || (empty($params[$key]) && $params[$key] !== 0.0 && $params[$key] !== '0')) {
```
The second version will match on both integer 0 and float 0.0, while the first only matches on integer 0 but not float 0.0.5.39.0https://lab.civicrm.org/dev/core/-/issues/1549Regen.sh/setup.sh would be nice if the output for civicrm_generated.mysql had...2021-06-07T14:49:56ZDaveDRegen.sh/setup.sh would be nice if the output for civicrm_generated.mysql had long lines broken upRelated mysql feature request: https://bugs.mysql.com/bug.php?id=65465
i.e. having super-long lines in a git-controlled file is awkward for file conflicts, and just generally awkward.
In particular the civicrm_option_value table.
I ha...Related mysql feature request: https://bugs.mysql.com/bug.php?id=65465
i.e. having super-long lines in a git-controlled file is awkward for file conflicts, and just generally awkward.
In particular the civicrm_option_value table.
I haven't looked how hard this is to do yet. TBD. Even if there's no mysql command line arg to do it maybe it can be done with a regex that runs right after mysqldump.5.39.0https://lab.civicrm.org/dev/core/-/issues/766New Event using a template - clicking "Continue" doesn't save custom data2022-04-22T16:22:26ZkenNew Event using a template - clicking "Continue" doesn't save custom dataWhen creating a New Event from an Event Template, and entering custom data for the event, hitting "Continue" doesn't save the custom data. This happens for me on 5.10.4, on the CiviHosting demo which is running 5.10.0, and the CiviCRM Sa...When creating a New Event from an Event Template, and entering custom data for the event, hitting "Continue" doesn't save the custom data. This happens for me on 5.10.4, on the CiviHosting demo which is running 5.10.0, and the CiviCRM Sandbox running 5.12.alpha1.
**How to reproduce**
1. Add a custom field to Event entities
2. Click _Events > New event_
3. Choose an Event Template
4. Enter the mandatory fields _and_ the custom data
5. Click _Continue_
6. Reload the page to force CiviCRM to fetch the event from the database
7. Visit the _Info and Settings_ tab
8. The custom data is unset
**Hint**
In my debugger I had a breakpoint in my implementation of _hook_civicrm_pre()_ and this didn't trigger when _Continue_ was pressed, but did when _Save_ or _Save and Done_ were pressed. If _Continue_ bypasses _pre()_ then perhaps it skips the Custom Data too?5.39.0https://lab.civicrm.org/dev/core/-/issues/365Unwanted mail blast sent by Scheduled Reminders2021-06-10T07:04:39Zmagnolia61Unwanted mail blast sent by Scheduled Reminders**BUG 1:**<br>
I enabled a scheduled reminder which was configured to sent 12 week before the start date of an event.
The start date was a month ago on july 21st.
* Expected behavior: no mail is being sent.
* Actual behaviour: 500 famil...**BUG 1:**<br>
I enabled a scheduled reminder which was configured to sent 12 week before the start date of an event.
The start date was a month ago on july 21st.
* Expected behavior: no mail is being sent.
* Actual behaviour: 500 families got an email with the last details on the event (that already happened).
Over the last few years we have had more incidents like these and it really hurts our reputation, and within our organization it also hurts the reputation of CiviCRM.
The scheduled reminders should be way more clear in configuration and unintentional mail blast should really be prevented by good tests and more solid code.
For this particular issue I would suggest to NOT send a reminder that is configured BEFORE an event, AFTER the event. This could be configured in Civi/ActionSchedule/RecipientBuilder.php although I lack the skills to figure out how.
**BUG 2**<br>
Also what happened is that the reminder was configured for specific participant statuses and it ignored that and sent it anyway to participants with any status. Should be solved but also a test should be introduced for this.
**BUG 3**<br>
The limit to group function seems (sometimes) to be ignored when sending to participants (selected by event type). Should be solved but also a test should be introduced for this.
**CONCLUSION**<BR>
I will further test on clean install, but to me this seems to be critical bugs as they
1) have a reputation impact<br>
2) might impact spam ratings<br>
3) cause a lot of work to follow up (send rectifications, responding to responses by mail)...
....5.39.0