CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-03-13T11:54:35Zhttps://lab.civicrm.org/dev/core/-/issues/4164CiviMail send mails only to certain location type2023-03-13T11:54:35ZjmargrafCiviMail send mails only to certain location typeI have the following Usecase:
A big organization is using CiviCRM for mailing marketing of different departments. Their Contacts can have several email addresses (with different location types).
A Contact has an email address that is use...I have the following Usecase:
A big organization is using CiviCRM for mailing marketing of different departments. Their Contacts can have several email addresses (with different location types).
A Contact has an email address that is used by department A for the communication with the customer via mass mailing.
But department B wants to communicate with the customer via another email address via mass mailing.
Currently there seems to be no possibility to select which email address location type should be preferred for an specific mass mailing (of department A - while department B creates another mass mailing and wants to select their preferred location type for another mass mailing).
Possibilities in CiviCRM:
I can create different location types for the different purposes.
I can add email addresses with the corresponding location type.
I can select one email address as the primary email address.
I can select one email address for mass mailing.
Problem:
But I can not select different email addresses for different mass mailings
Possible Workaround:
I could keep the two contacts as duplicates in the system. But the customer still still want to have an overall overview over their communication with this contact - so simply having duplicates is not an attractive option.
Feature Request:
What I would need is the feature of selecting the preferred location type to be used for a specific mailing.
If the contact has no email address of this communication type the fallback option could be the primary / bulk-e-mail-address
What effort would it take to create such a feature? I guess it would make most sense to implement it into the civicrm core - do you aggree?https://lab.civicrm.org/dev/core/-/issues/3457Make SearchKit available to non-admin users2022-06-04T04:07:12ZcolemanwMake SearchKit available to non-admin usersThis is a sponsored issue to make SearchKit available to non-admins by adding a new permission.This is a sponsored issue to make SearchKit available to non-admins by adding a new permission.colemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3186SearchKit - Add "grand total" row2022-05-24T23:27:07ZcolemanwSearchKit - Add "grand total" rowcolemanwcolemanwhttps://lab.civicrm.org/dev/core/-/issues/3173FormBuilder: Support CAPTCHA2022-11-08T23:58:10ZJonGoldFormBuilder: Support CAPTCHAA major use case for afforms is to create public-facing forms. However, without CAPTCHA this isn't currently practical.
This is a Paid Issue Queue item.A major use case for afforms is to create public-facing forms. However, without CAPTCHA this isn't currently practical.
This is a Paid Issue Queue item.Kurund JalmiKurund Jalmihttps://lab.civicrm.org/dev/core/-/issues/2873Exporting related contact's information on a contact that is a subtype fails2024-02-02T05:03:23Zfabian_SYSTOPIAExporting related contact's information on a contact that is a subtype failsOverview
----------------------------------------
There is an old bug described on the old issue tracker that prevents related contact information to be exported via the UI if one of the contacts is a subtype.
https://issues.civicrm.org/...Overview
----------------------------------------
There is an old bug described on the old issue tracker that prevents related contact information to be exported via the UI if one of the contacts is a subtype.
https://issues.civicrm.org/jira/browse/CRM-16693
Reproduction steps
----------------------------------------
1. Search for any contacts, e.g. a subtype
1. Select at least one contact and choose "export contacts"
1. choose select fields for export
1. select display name or anything else of the contact (will be exported correctly)
1. select a field of a related contact (relationship) e.g. display name
Current behaviour
----------------------------------------
If one of the contacts is a contact subtype or the relationship is defined to be only allowed among subtypes the exported columns won't contain any data (data of the "main contact" will be exported correctly).
Expected behaviour
----------------------------------------
Data of related contact should be exported as well.
Environment information
----------------------------------------
* Browser: all
* CiviCRM: Since 4.6.x still occuring in 5.35.x
Comments
----------------------------------------
We may have funding to fix this bug and would appreciate an estimate from the core team.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/2809Profile error - requested Profile is disabled OR2024-01-28T05:03:32ZcweddellProfile error - requested Profile is disabled ORWe're seeing recurring errors when trying to complete registration using various Profiles:
"The requested Profile (gid=XX) is disabled OR it is not configured to be used for 'Profile' listings in its Settings OR there is no Profile wit...We're seeing recurring errors when trying to complete registration using various Profiles:
"The requested Profile (gid=XX) is disabled OR it is not configured to be used for 'Profile' listings in its Settings OR there is no Profile with that ID OR you do not have permission to access this profile."
All the relevant ACL permissions are in place - Register for event, Profile edit/create/view/access custom data.
Creating new profiles (with no custom fields) makes no difference.
Others have found found they only encounter the Profile error if the event has "Send Confirmation Email?" turned ON in Online Registration. If the email is turned off, I don't see the error.
This has not solved it for me, though it appears data is saved when the form is submitted, but emails are not sent (the error is thrown).
https://chat.civicrm.org/civicrm/pl/r6ucwf994brotgiaa87gjjx5jo
https://civicrm.stackexchange.com/questions/40119/profile-error-requested-profile-is-disabled-or
* Browser: not browser dependent - same error while using Firefox 91.0 / Chrome 93.0.4577.42 / Safari 14.1.2
* CiviCRM: probably started 5.35.2 (ish), still happening 5.40.4
* PHP: 7.3.27
* CMS: WordPress 5.7 & 5.8
* Database: mySQL 5.7.31
* Web Server: Apache 2.4.48Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/1715CiviCase dashboard/find case: Additional columns and filters needed2022-05-11T14:39:19ZDetlev SieberCiviCase dashboard/find case: Additional columns and filters neededIn order to improve the workflow, the following should be added to the find case / dashboard functionality of CiviCase:
New column: "Case_ID" -> with sorting
New filter: "Next Sched. assignee"
* This should refer to the "Next Sched." ...In order to improve the workflow, the following should be added to the find case / dashboard functionality of CiviCase:
New column: "Case_ID" -> with sorting
New filter: "Next Sched. assignee"
* This should refer to the "Next Sched." actitivity from the list.
* The filter list should contain "myself" as the first entry, and then should display all other assignee contained in the activities displayed on the case list.
This functionality should be available on:
* case dashboard
* search results (case search)
* case dashletshttps://lab.civicrm.org/dev/core/-/issues/1330Too many custom fields2022-06-29T04:32:32ZkristinecToo many custom fieldsAdding 93+ custom fields within a custom_group seems to cause a DB Constraint error and gives an error when clicking manage cases (for some cases). To replicate:
1. Create a custom group
2. Add 93 custom fields
3. Once you pass 93, the ...Adding 93+ custom fields within a custom_group seems to cause a DB Constraint error and gives an error when clicking manage cases (for some cases). To replicate:
1. Create a custom group
2. Add 93 custom fields
3. Once you pass 93, the error "DB Constraint Violation - custom_group_id should possibly be marked as mandatory for CustomField,create API. If so, please raise a bug report" appears when saving a new custom field.
4. Find several cases and when trying to access their case page, I get an error: "case_id is not valid : 1."
5. Disable the custom group. Error #4 disappears.
This can be marked as a paid-issue-queue.https://lab.civicrm.org/dev/core/-/issues/1257Make Relationship Description searchable (Paid Feature2019-10-16T13:44:06Zfabian_SYSTOPIAMake Relationship Description searchable (Paid Feature**Overview**
Relationships provide a "description" field which is nicely displayed in the relationship tab of a contact. However, it is currently not possible to search for those descriptions using any regular CiviCRM search.
**Scope**...**Overview**
Relationships provide a "description" field which is nicely displayed in the relationship tab of a contact. However, it is currently not possible to search for those descriptions using any regular CiviCRM search.
**Scope**
User should have the possibility to search for contacts with certain descriptions in the relationship. The advanced search should offer a possibility to search for relationship descriptions.
**Note**
I originally posted this on CiviCRM's Jira but it probably git lost in migration so I am re-posting it here. We have a customer who may fund this so it would be great to get an estimate from the core team. We would be able to test the improvement.https://lab.civicrm.org/dev/core/-/issues/1256Improve error handling to always throw exceptions and never abend2024-01-27T05:03:27ZAndrew WestImprove error handling to always throw exceptions and never abendWe're interested in funding a fix to ensure errors are always thrown as exceptions, as mentioned here: https://issues.civicrm.org/jira/browse/CRM-11193 and here: https://lab.civicrm.org/dev/core/issues/395 and here: https://lab.civicrm.o...We're interested in funding a fix to ensure errors are always thrown as exceptions, as mentioned here: https://issues.civicrm.org/jira/browse/CRM-11193 and here: https://lab.civicrm.org/dev/core/issues/395 and here: https://lab.civicrm.org/dev/core/issues/749
If someone could tag this with 'paid-issue-queue' I'd appreciate it.
Our particular interests are:
* catching errors when generating groups for mailings. Currently if these fail a mailing can cheerily sail on without the correct exclusion group
* catching smarty errors in mailings. These currently fail silently and can kill the scheduled jobs list
It seems like both of these are covered by CRM-11193.
I'm not promising we can fund the whole thing, but we can at least pay for time spent investigating what needs to be done.https://lab.civicrm.org/dev/core/-/issues/873Mosaico A/B testing for "Subject" line2022-05-12T22:15:51ZtottenMosaico A/B testing for "Subject" line> This is catch-all issue for linking together various changes in https://github.com/veda-consulting/uk.co.vedaconsulting.mosaico/ and https://github.com/civicrm/civicrm-core.
## General goal
When composing a new mailing in Mosaico, al...> This is catch-all issue for linking together various changes in https://github.com/veda-consulting/uk.co.vedaconsulting.mosaico/ and https://github.com/civicrm/civicrm-core.
## General goal
When composing a new mailing in Mosaico, allow the user to enter multiple subject lines. Each subject will be delivered to a different set of users as part of an A/B test.
## Related documents
* [Wiki: ABn testing v2](https://wiki.civicrm.org/confluence/display/CRM/ABn+testing+v2): This is a specification developed at a previous sprint near Cologne, DE. This issue is targetting the same UI spec, and some of the data-structures anticipate the ABn v2, but it only tackles Mosaico Subject UI - not all the other requirements.
* [Gist: Mosaico A/B planning](https://gist.github.com/totten/cb4ef069b57b90eb4090b4123f5eabb6): Comparison of a few project plans (tasks, trade-offs, etc). We're pursuing A2.
## Exploratory branches
The purpose of an exploratory branch is to allow varied experimentation (tweaking multiple parts with the aim of reaching a cogent/working approach) before submitting each individual change to the full review. Exploratory branches may have frequent/unplanned changes (rebasing, squashing, more commits, etc).
There are a couple exploratory branches:
* https://github.com/totten/civicrm-core/tree/5.7-mosaico-ab-exp
* https://github.com/totten/uk.co.vedaconsulting.mosaico/tree/2.x-ab
## Pull Requests
As specific items from the exploratory changes firm up, they're submitted as full PRs.
* [14044: CiviUnitTestCase - Extract traits to facilitate extension testing](https://github.com/civicrm/civicrm-core/pull/14044)
* [14045: MailingAB - Migrate "copy winner" logic from JS to PHP](https://github.com/civicrm/civicrm-core/pull/14045)
* [14047: civi.api.prepare - Allow dynamic wrappers](https://github.com/civicrm/civicrm-core/pull/14047)https://lab.civicrm.org/dev/core/-/issues/635Implement reconnect/replay-on-write for database connections2020-09-09T05:24:30ZtottenImplement reconnect/replay-on-write for database connectionsCurrently, CiviCRM always connects to a singular DSN. For epic:ro-db, we seek compatibility with a split DB architecture in which one routes MySQL requests to (a) read-only slave DBs and/or (b) read-write master DB. This issue specifical...Currently, CiviCRM always connects to a singular DSN. For epic:ro-db, we seek compatibility with a split DB architecture in which one routes MySQL requests to (a) read-only slave DBs and/or (b) read-write master DB. This issue specifically proposes a "reconnect-on-write" or "replay-on-write" (RPOW) mechanism as a general, global baseline.
## Technical Overview
One possible technique is to sprinkle flags/hints into the application to indicate which use-cases should be served by slave/rodb or by master/rwdb. *Some* of this sprinkling is likely happen, but we have a large, open-ended application (with several built-in subsystems and several third-party extensions/addons). Auditing all of these is somewhat daunting task.
RPOW aims to provide a *generic baseline* that relies primarily on MySQL semantics (and doesn't require auditing every use-case carefully). The general idea is:
1. Connect optimistically to the read-only slave (expecting a read-only use-case). We can continue using the RODB as long as requests are read-oriented (e.g. `SELECT`).
2. If there is an actual write operation (e.g. `UPDATE`), then reconnect to the read-write master.
Dynamically switching to the read-write master is not quite as simple as it sounds:
* Some SQL statements (eg `SET @foo` and `CREATE TEMPORARY TABLE`) can be legitimately used in a read-oriented operation (e.g. advanced querying/reporting) -- but they may also be prelude to a write-operation (e.g. building a temp-table with a list of targets and then updating each one). We allow these to execute on the RODB -- but, when/if we reconnect to RWDB, then we *replay* those statements.
* To support replay, we must be able to classify any SQL statement into one of three buckets:
* `READ` (Ex: `SELECT * FROM foo`): The SQL statement has no side-effects; it simply reads data.
* `BUFFER` (Ex: `SET @user_id = 123`): The SQL statement has no long-term, persistent side-effects; it can, however, have temporary side-effects during the present MySQL session.
* `WRITE` (Ex: `TRUNCATE foo`): The SQL statement has long-term, persistent side-effects and must be executed on the master. (Generally, if we can't demonstrate that something is `READ` or `BUFFER`, then we assume it is `WRITE`.)
* The MySQL query language has interesting edge-cases (e.g. `SELECT @foo := id FROM bar FOR UPDATE`) that should be handled correctly.
* We don't know anything about the delay in sync'ing between RODB and RWDB. After making a write, we'll continue sending all requests (reads or writes) to RWDB for some *period of time*. (Ex: After updating a contact in RWDB, the user's browser gets a cookie -- and, for the next 60 seconds, any additional reads should hit RWDB.)
## Limitations and Assumptions
* RPOW makes sense if user's are primarily reading from MySQL. Stock CiviCRM relies extensively on MySQL for caching and session-state, which leads to frequent writes. However, if you use the Redis integration for caches/sessions/prevnext, then this is significantly reduced.
* RPOW aims to *mitigate/reduce* the need for sprinkling use-case specific hints. However, there may still be scenarios where one wants to sprinkle hints. In particular: the contact-edit screen uses optimistic-locking (which reads the last-modified timestamp before authorizing updates); for correct oplocking, there should be a hint that any POST requests to the contact-edit screen need the RWDB.
## Relevant Tasks / Patches / Subtasks
The following are types of patches / subtasks we may expect:
* Adding a new DB driver -- an admin can opt-in to using RPOW behavior by setting `CIVICRM_DSN` to a special value (and registering DSNs for both RODBs and RWDB).
* Adding a unit-test to ensure correct classification of a range of SQL examples.
* Maintaining a cookie or session-variable to indicate that a user needs to be temporarily directed to RWDB by default.
* Updating existing use-cases to reduce gratuitous writes or to send hints about specific write-oriented use-cases.
NOTE: I've currently got a draft project in https://github.com/totten/rpow ; however, I'm filing this issue here because some of this work will need to come back into core.
## Pull Requests
* [#13394 - Reduce unnecessary SQL writes](https://github.com/civicrm/civicrm-core/pull/13394) (m)
* [#13500 - (REF) Add CRM_Utils_Cache::nack(). Use it for NaiveHasTrait](https://github.com/civicrm/civicrm-core/pull/13500) (m)
* [#13496 - Implement local array-cache for use with Redis/Memcache](https://github.com/civicrm/civicrm-core/pull/13496) (m)
* [#13489 - Deprecate CRM_Core_BAO_Cache for I/O. Optionally redirect I/O to Redis or Memcache. #13489 ](https://github.com/civicrm/civicrm-core/pull/13489) (m)
* [#13514 - CRM_Utils_Cache::nack() - Fix format](https://github.com/civicrm/civicrm-core/pull/13514) (m)tottentottenhttps://lab.civicrm.org/dev/core/-/issues/553CRM-18570 When creating a new event using a template the new event screen is ...2021-02-25T05:55:29Zm robimorgan@palantetech.coopCRM-18570 When creating a new event using a template the new event screen is taking the default values directly from the custom fields, and not from what's saved in the event template.Original issue: https://issues.civicrm.org/jira/browse/CRM-18570
When creating a new event using a template the new event screen is taking the default values directly from the custom fields, and not from what's saved in the event templa...Original issue: https://issues.civicrm.org/jira/browse/CRM-18570
When creating a new event using a template the new event screen is taking the default values directly from the custom fields, and not from what's saved in the event template.
Selecting a template from new/edit Event gets the values from the custom field in 4.6.38 but in 5.x the custom field values are ignored and the defaults are used.
There are some changes in the function copy() between 4.6 and 5.x, https://lab.civicrm.org/dev/core/blob/master/CRM/Event/BAO/Event.php#L9275.16.0https://lab.civicrm.org/dev/core/-/issues/394Wildcards are ignored in some smart group criteria, when the smart group is d...2018-10-18T09:37:04ZAndrew WestWildcards are ignored in some smart group criteria, when the smart group is directly generated for a mailingIf you create an Advanced Search with a wildcard in a custom data field*, then use the Actions menu to create a Mailing from these search results, the Mailing won't apply the wildcard. This usually results in fewer recipients than in the...If you create an Advanced Search with a wildcard in a custom data field*, then use the Actions menu to create a Mailing from these search results, the Mailing won't apply the wildcard. This usually results in fewer recipients than in the original search.
But if you create a smart group from the data, and then use the smart group in a new mailing, everything works fine.
Ultimately this happens because of this line in CRM_Contact_BAO_SavedSearch, which is actively stripping out % wildcards from the values in the database:
https://github.com/civicrm/civicrm-core/blob/master/CRM/Contact/BAO/SavedSearch.php#L164
Why is there a difference between the two types of smart group? When you save a smart group directly, you're sent via CRM_Contact_Form_Task_SaveSearch. This serializes the advanced-search form values as query format (? not sure of terminology, sorry). But if you want to create a mailing directly you go via CRM_Mailing_Form_Task_AdhocMailing. This serializes the advanced-search form values directly from quickform.
When these values are unserialized in CRM_Contact_Form_Task_SaveSearch::getFormValues(), the query format ones are fine as-is. But the form values need some processing, and that's when the % is stripped out.
This is a bit low-level for me to start messing around with, so I'm going to Paid Issue Queue this one.
*I haven't tested if this applies to other fields tooMonish DebMonish Debhttps://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.0https://lab.civicrm.org/dev/core/-/issues/208Load case to webform with contactID, checksum and caseID in the URL2020-10-19T23:40:28ZshitijgLoad case to webform with contactID, checksum and caseID in the URL**Overview:**
This ticket is targeted at improving the case loading functionality for webforms.
We need to modify the webform to autoload the case onto a webform if contact id and checksum of the case manager (or anyone who has permiss...**Overview:**
This ticket is targeted at improving the case loading functionality for webforms.
We need to modify the webform to autoload the case onto a webform if contact id and checksum of the case manager (or anyone who has permission to see the case) and case id are present in the url.
**How it works currently:**
Case fields (except case roles) are currently loading on webforms. However, this is not the case when we use checksum of a user who has access to the case and send this case url to as that user in email.
This url has the contactID and checksum of the user who we are sending an email, and the caseID.
**How we would like to improve the functionality:**
By passing the contactID + checksum (of a user who has access to the case) and the case ID in the URL, the case will be accessible (preload in the webform) to the case manager (or anyone who has permission to see the case)https://lab.civicrm.org/dev/core/-/issues/206Filter webform dropdown through relationship type2018-10-15T12:00:57ZshitijgFilter webform dropdown through relationship type**Overview:**
This ticket is targeted at improving the data filtering capabilities of the ‘Existing Contact’ field of the Webform CiviCRM.
With this new filtering - we will be able to filter the existing contact field with values deri...**Overview:**
This ticket is targeted at improving the data filtering capabilities of the ‘Existing Contact’ field of the Webform CiviCRM.
With this new filtering - we will be able to filter the existing contact field with values derived from a particular relation type that a contact has with another contact.
**How it works currently:**
Currently we have the ability to filter through Groups and Tags
We also currently have the ability for the existing contact field on the webform to autoload static value through a predefined relationship to another ‘existing contact’ field on the webform.
i.e.
If Contact 1 is the Case Client and has a relationship: ‘Employee of’ with Ashville School, we can add another contact field on the webform and enable the relationship fields on it to:
‘Employee of’.
![Screen_Shot_2018-06-25_at_18.39.01](/uploads/c00aa3024f6e72160d7f781b1778f302/Screen_Shot_2018-06-25_at_18.39.01.png)
We will also have to edit the ‘Existing Contact’ field and select it’s default value to load from a relationship.
![Screen_Shot_2018-06-25_at_18.40.02](/uploads/0b316d87ec5e6fb5055765411b4dea1e/Screen_Shot_2018-06-25_at_18.40.02.png)
This would mean that Contact 2 on the webform will be the value coming from the ‘Employee of’ relationship with Contact 1 (in this case - for our selected case client - it would be ‘Ashville School’)
In this way we are able to load the value from a relationship that 2 contacts have, however, we can not do this dynamically.
I.e.
Contact 3 (another contact on the webform) cannot be set to filter and give back a list of all the students at Ashville School (have a relationship ‘Student at’ with ‘Ashville School’, so that the user filling the form can select one of the students.
**How we would like to improve the functionality:**
With this new implementation, we will be able to filter values for an ‘Existing Contact’ field on the webform through specifying a relationship and relationship with.
Continuing from our previous example where:
Contact 1 - Joe Bloggs (Case Client)
Contact 2 - Ashville School (Has the relationship ‘Employer of’ with Joe Bloggs)
Contact 3 - We need a list of all students at Ashville School and be able to select this on the form
To achieve this - we will need the following configurations in the filters section of the ‘Existing Contact’ field:
![Screen_Shot_2018-06-25_at_18.36.55](/uploads/b5ab2bbe9d46659399bae4739b6010e3/Screen_Shot_2018-06-25_at_18.36.55.png)
In the above example, the user will be able to select:
Relationship Type - ‘Student at’
Contact - ‘Contact 2’
This would mean when the webform loads, it will populate all the students at Contact 2 (Ashville School) as option values for Contact 3.