# Question
Title: creation of new contact at user registration fails: The requested Profile is disabled OR it is not configured
I've found several posts about this error but so far none have helped.

I have a Joomla system where I am using a CiviCRM profile for user registration. It has been working fine for several months.

However in the last week I've noticed CiviCRM contacts are no longer being created when the user submits the registration form. Joomla users are created just fine, and notification emails including information from the Civi profile are sent correctly. But no contact is created, and the log file shows

"The requested Profile (gid=16) 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. Please contact the site administrator if you need assistance."

Since this was working before, I'm not sure what's changed to cause the problem. Based on other posts, I have checked the following:

* Profile is enabled
* Profile is set to be used for user registration
* All custom data fields used in the profile are set to "User/User Admin only"
* Joomla public and guest groups have permissions "Civi:Create profile, Civi:edit profile, Civi:view profile, Civi:access custom data"

Stack trace seems clear it is permissions issue:

```
/home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/BAO/UFGroup.php:196 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Profile/Form.php:408 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Profile/Form/Search.php:32 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/Form.php:707 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/QuickForm/Action/Display.php:76 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/packages/HTML/QuickForm/Controller.php:203 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/packages/HTML/QuickForm/Page.php:103 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/Controller.php:355 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Profile/Page/Listings.php:387 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Profile/Page/Router.php:107 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/Invoke.php:319 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/Invoke.php:69 { …}
      /home/XXXXXXXX/siteroot/administrator/components/com_civicrm/civicrm/CRM/Core/Invoke.php:36 { …}
      /home/XXXXXXXX/siteroot/components/com_civicrm/civicrm.php:84 { …}
      /home/XXXXXXXX/siteroot/components/com_civicrm/civicrm.php:11 { …}
      /home/XXXXXXXX/siteroot/libraries/src/Component/ComponentHelper.php:402 { …}
      /home/XXXXXXXX/siteroot/libraries/src/Component/ComponentHelper.php:377 { …}
      /home/XXXXXXXX/siteroot/libraries/src/Application/SiteApplication.php:194 { …}
      /home/XXXXXXXX/siteroot/libraries/src/Application/SiteApplication.php:233 { …}
      /home/XXXXXXXX/siteroot/libraries/src/Application/CMSApplication.php:225 { …}
      /home/XXXXXXXX/siteroot/index.php:49 { …}

```

What else can I check? Thanks!

Joomla 3.10.11 (I know, upgrade is in progress!) CiviCRM 5.63.2

# Answer
The error only appears if

1. Profile id:16 do not exists.
2. No fields in the profile id:16
3. user role do not have 'CiviCRM: profile listings' permission
4. If ACL is enabled for the profiles, it needed to added to view in list mode

HTH

Pradeep
> 2 votes

---
Tags: profile, forms, registration
---


# Question
Title: Quicksearch: include the Organization's Nickname
I'm looking to make **Quicksearch** more usable for my users when it comes to searching for contacts of type `Organization`.

Specifically it would be great if they could use Quicksearch to find an `Organization` by its `Nickname` field.

Currently Quicksearch only seems to match on the organization's name (`organization_name` db field).

1. Does the setting `Search Preferences > Include Nickname` only apply to `Individual` contacts and not `Organization` contacts?
2. Is there any easy way to enable this via configuration that I'm overlooking?

Otherwise I can think of a quick workaround, which is for me to stuff the `nick_name` into the `organization_name` field.

# Answer
There are 4 relevant fields to consider:

1. Organization Name
2. Nickname
3. Display Name
4. Sort Name

Fields 3 & 4 are readonly "calculated" fields, which by default in Civi are simply populated with the Organization Name (field 1). But they're not to be confused. The 4th is exclusively used in searching - that's the field used by quicksearch, not field 1.

Unfortunately there is no UI in CiviCRM for configuring this field for Organizations (for Individuals, yes, just not for Orgs). But a very simple hook would do it:

```
function hook_civicrm_post($op, $objectName, $objectID, $objectRef) {
  if ($objectName === 'Organization') {
    CRM_Core_DAO::executeQuery('UPDATE civicrm_contact
      SET sort_name = CONCAT(organization_name, " (", nick_name, ")")
      WHERE contact_type = "Organization" AND nick_name IS NOT NULL');
  }
}

```

It's slightly crude because it updates every org in the database every time one is saved, but that ensures things are always up-to-date. If you had millions of orgs in the db it might hurt performance, otherwise it's the simplest solution.
> 3 votes

# Answer
The setting Search Preferences \> Include Nickname, do work on a quick search for Organization but the result displayed will not contact nick name in it.
> 2 votes

---
Tags: organization, quicksearch
---


title: Empty profile after saving

text:
# Question
Title: Empty profile after saving
We have small forms (profiles) on the dashboard to create contacts. However, these do not empty after saving, so that inexperienced users do not see the small "saved" note in the corner and press save a thousand times. Is it possible that the form is emptied after saving?

LG Gregor

# Answer
> 0 votes
Yes, it is possible with a little bits of a custom JavaScript, however the precise answer depends on your set-up details we do not have much knowledge about.

---
Tags: dashboard
---


title: CiviCRM failed to upgrade

text:
# Question
Title: CiviCRM failed to upgrade
We are trying to upgrade CiviCRM to 5.67.1 and are hit with an error

```
ALTER TABLE `civicrm_contribution_page` CHANGE `title` `title` varchar(255) NOT NULL COMMENT 'Contribution Page title. For top of page display' [nativecode=1265 ** Data truncated for column 'title' at row 14]"

mysql> SELECT MAX(LENGTH(title)) FROM `civicrm_contribution_page` WHERE 1;
+--------------------+
| MAX(LENGTH(title)) |
+--------------------+
|                 25 |
+--------------------+
1 row in set (0.01 sec)

```

Not sure what is the issue, Has anyone got similar issue?

# Answer
There is a record in civicrm\_contribution\_page with an empty title field.

```
SELECT id, title FROM civicrm_contribution_page WHERE title IS NULL;

```

If you get a list update the title from the UI or run the below query to update the title temporary

```
UPDATE civicrm_contribution_page
SET title = CONCAT('Page-', id)
WHERE title IS NULL;

```
> 2 votes

---
Tags: upgrade
---


# Question
Title: CIVICRM WP critical error after migrating to PHP 8.1
I am running CIVICRM on WordPress 6.4.1 with PHP 7.4. Upgraded both platforms to the latest versions. After changing php version from 7.4 to 8.1, I get a WP critical error. After enabling WP debug, I get the following message.

Any idea on how to correct this?

Deprecated: auto\_detect\_line\_endings is deprecated in ..../wp-content/uploads/civicrm/civicrm.settings.php on line 596

Fatal error: Array and string offset access syntax with curly braces is no longer supported in ..../wp-content/uploads/civicrm/ext/com.pogstone.fancytokens/fancytokens.civix.php on line 149 There has been a critical error on this website. Please check your site admin email inbox for instructions.

# Answer
There hasn't been a release for fancytokens in a while but as a workaround you can just edit that fancytokens.civix.php file and change the `{0}` to `[0]` on line 149.

For the other one just remove line 596 from your civicrm.settings.php. There was a pre-upgrade notice in 5.62 about it.
> 2 votes

---
Tags: wordpress, php
---


# Question
Title: Is there a more upto date guide for civicase?
I'm currently trying to learn more about how to make civicase work better for us but there is only the https://docs.civicrm.org/user/en/latest/case-management/ available which I understand is out of date. Does anyone know if there is something else available.

TIA

# Answer
> 0 votes
You'll need to give specifics on what you think is out of date. Filing issues or pull requests to update anything that's wrong are always welcome since it's entirely maintained by volunteers.

See https://civicrm.org/bug-reporting

You can also post about any specific issue you're trying to solve and someone here might come up with a suggestion.

---
Tags: civicase, documentation
---


# Question
Title: SMTP with Gmail and App Password: Civi says success, but it's not sent
This works:

* I have Civi set up to send email through my personal Google account (using an App Password because I use 2FA). This works, but the emails have **my** address as sender, of course, which we want to fix.

This does not work:

* My organisation also uses Google, and my account also uses 2FA, and I have also created an App Password - just as with my personal account.
* In CiviCRM, in the SMTP settings, I *only* replace the SMTP username and SMTP password, switching from my personal data to the organisation data.
* Sending a test email causes **CiviCRM to report "OK", but that test email never arrives.**
* Switching back to my personal account data and sending a new test email is successful: CiviCRM gives the same confirmation *and that email arrives.*
* Despite everything seeming identical, **what am I missing?**

# Answer
> 1 votes
I found that I needed to **set up a new user account in our Google organisation** and use that in CiviCRM. Now it works. Here are the steps I did:

*Note: English settings might be named a little different than given here; our CiviCRM is set to German so I translate onthe fly.*

1. create new user account in our Google organisation.
2. Gmail settings \> Forwarding and POP/IMAP \> turn on POP access. (Mark Gmail's copy as read.)
3. Google account settings \> security \> turn on "less secure app access".
4. CiviCRM \> Admin \> CiviMail \> Sender address \> enter email address of Gmail account.
5. CiviCRM \> Admin \> CiviMail \> Mail accounts \> edit default account:
    1. name = Gmail
    2. server = pop.gmail.com
    3. username = email address of Gmail account
    4. password = password of Gmail account (just the regular password, not some app-specific one, because we chose to use "less secure app access".)
    5. local part = leave empty
    6. email domain = the part after @ in the email address of Gmail account
    7. return path = leave empty
    8. protocol = POP3
    9. mail folder = leave empty
    10. use SSL = turn checkbox on
    11. use for = bounce

With these settings, the button "save and send test mail" resulted in a successful alert in CiviCRM, and the email was indeed sent to the test recipient.

# Answer
> 0 votes
You may want to check email permissions in your organization Google Workspace for the email account you switch to and see the "From Email Address Options" CiviCRM page ("Administer \> Communications \> FROM Email Addresses")

---
Tags: email, smtp, google, outbound-email
---


# Question
Title: Allow events to be autoloaded from URL Webform CiviCRM does not seem to work
OK my webform has a couple of test events all public and a single contact, The event is set to register all contacts for the same event. The contact is able to register for one event, user select. The event is set to autopopulate from the URL, my url is in the form form/{form-alias}?event1=254

The events list on the form as radio buttons.

And it's just not populating the event, that is the correct radio button is not highlighed, nor is the correct event selected if its in listing format. Am I missing something?

Using Civicrm 5.67 and Drupal 10. Webform 6.2.4.

https://lgf2.xpdient.co.uk/form/my-test-webform?event1=254

# Answer
If the method on the webform

is set to

1. '**Register all contacts for the same event(s)**' then use node/484?event1=254 or node/484?event2=251
2. '**Register each contact separately**' then use node/484?c1event1=254 or node/484?c1event1=254,252

HTH

Pradeep
> 2 votes

# Answer
I did spend 5 hours on this and the error was totally repeatable on several forms. Now I have built a new form and everything works just fine. I'm at a loss to explain. Sorry to waste everyone's valuable time.
> 0 votes

---
Tags: webform-civicrm
---


title: Redis running on socket?

text:
# Question
Title: Redis running on socket?
Am I right to think that Redis should be configured with a TCP port to work with CiviCRM?

I would like to use the Unix socket option.

# Answer
You can replace the connect function in /vendor/civicrm/civicrm-core/CRM/Utils/Cache/Redis.php to use pconnect to connect via a socket:

```
public static function connect($config) {
    $socket = '/run/redis/redis.sock'; // Path to the Redis socket
    $pass = CRM_Utils_Constant::value('CIVICRM_DB_CACHE_PASSWORD');
    $id = implode(':', ['connect', $socket /* $pass is constant */]);
    if (!isset(Civi::$statics[__CLASS__][$id])) {
        $redis = new Redis();
        if (!$redis->pconnect($socket)) {
            // dont use fatal here since we can go in an infinite loop
            echo 'Could not connect to Redis server using socket';
            CRM_Utils_System::civiExit();
        }
        if ($pass) {
            $redis->auth($pass);
        }
        Civi::$statics[__CLASS__][$id] = $redis;
    }
    return Civi::$statics[__CLASS__][$id];
  }

```
> 0 votes

---
Tags: cache
---


# Question
Title: Issues with CiviCRM Tables During MySQL 8.0 Upgrade
During the upgrade to MySQL 8.0, I encountered three different warnings related to CiviCRM tables and I want to take the correct steps in this regard. These warnings are listed below:

1. **Usage of db objects with names conflicting with new reserved keywords** Warning: The following objects have names that conflict with new reserved keywords. Ensure queries sent by your applications use **quotes** when referring to them or they will result in errors.

Do I need to fix the mentioned 4 tables (sample tables listed below)? Are the commands I provided for fixing these tables correct and valid?

Sample Tables:

* xxx\_xx.civicrm\_mapping\_field.grouping - Column name
* xxx\_xx.civicrm\_option\_value.grouping - Column name
* xxx\_xx.log\_civicrm\_mapping\_field.grouping - Column name
* xxx\_xx.log\_civicrm\_option\_value.grouping - Column name

Proposed Solution:

```
SELECT `grouping` FROM xxx_cagri.civicrm_mapping_field;

```
2. **Usage of utf8mb3 charset** The following objects use the utf8mb3 character set. It is recommended to convert them to use utf8mb4 instead, for improved Unicode support.

Do I need to fix the mentioned 2250 tables (sample tables listed below)? Will the approach I provided be effective in this case?

Sample Tables:

* xxx\_xx.alode\_akeeba\_common.key - column's default character set: utf8
* xxx\_xx.civicrm\_acl.name - column's default character set: utf8
* xxx\_xx.civicrm\_acl.entity\_table - column's default character set: utf8
* xxx\_xx.civicrm\_acl.operation - column's default character set: utf8

Proposed Solution:

```
ALTER TABLE xxx_cagri.civicrm_acl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE xxx_cagri.civicrm_action_log MODIFY COLUMN message TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

```
3. **Usage of obsolete sql\_mode flags** The following DB objects have obsolete options persisted for sql\_mode, which will be cleared during upgrade to 8.0.

Do I need to fix the mentioned 376 tables (sample tables listed below)? Will the provided approach be effective in this scenario?

Sample Tables:

* xxx\_xx.civicrm\_strip\_non\_numeric - FUNCTION uses obsolete
* xxx\_xx.civicrm\_acl\_after\_insert - TRIGGER uses obsolete NO\_AUTO\_CREATE\_USER sql\_mode
* xxx\_xx.civicrm\_acl\_after\_update - TRIGGER uses obsolete NO\_AUTO\_CREATE\_USER sql\_mode
* xxx\_xx.civicrm\_acl\_after\_delete - TRIGGER uses obsolete NO\_AUTO\_CREATE\_USER sql\_mode

Proposed Solution:

```
ALTER FUNCTION xxx_cagri.civicrm_strip_non_numeric SET @@sql_mode = 'NEW_SQL_MODE_FLAGS';

```

What are your experiences and recommendations regarding these warnings and proposed solutions? Thank you in advance for your assistance.

# Answer
1. Yes. If you see any errors coming from core code it would be good to create a PR or file an issue.
2. There's an api call you can run instead which will use the correct sql statements and update the tables for you. You can use api explorer (Support menu - Developer - Api3 Explorer) but it might time out on a large database so using cv from the command line might be better: `cv api3 System.utf8conversion`. Some extensions have tables that don't start with `civicrm_` so you may need to run it a second time and specify the tables using the `pattern` parameter, e.g. `cv api3 System.utf8conversion patterns="cividiscount%"`

3. It might be coming from your global sql\_mode in mysql so you'll want to update that, then rebuild triggers using `cv flush -T` or using menu rebuild `http://example.org/civicrm/menu/rebuild?reset=1&triggerRebuild=1`
> 1 votes

---
Tags: sql, mysql-8.0, utf8mb4, sql-mode
---


title: Relationships not being displayed

text:
# Question
Title: Relationships not being displayed
I deleted my previous post because I am now seeing different behaviour. When looking at a contact record I selection relationships and see this:

I know this contact has multiple relationships but they just don't show here. I added a new relationship , the database tables were updated (I checked) but the relationship doesn't show.

Same for notes as well. I can see no errors being generated at all but it looks , to me with my naive view at the moment, that possibly permissions are not matching?

Any clues

I am running Joomla 4.4.1 , PHP 8.1 and CiviCRM 5.67.2

Edit

I started to look in FormBuilder and have noticed this

See next to the Form Settings all I am getting is a spinning wheel. If I try to create a new form that give me the option to Find Contacts. Is this showing that maybe this report is corrupt in some way?

I have another test instance and went to look in there and see this:

You can clearly see where it shows "Contacts Summary Relationships Active" in the spot where I have the "spinning wheel". What is causing that?

# Answer
Import the relationship SK from the searchkit UI

```
    [
  [
    "SavedSearch",
    "save",
    {
      "records": [
        {
          "name": "Contact_Summary_Relationships",
          "label": "Contact Summary Relationships",
          "api_entity": "RelationshipCache",
          "api_params": {
            "version": 4,
            "select": [
              "near_relation:label",
              "RelationshipCache_Contact_far_contact_id_01.display_name",
              "start_date",
              "end_date",
              "RelationshipCache_Contact_far_contact_id_01.address_primary.city",
              "RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label",
              "RelationshipCache_Contact_far_contact_id_01.email_primary.email",
              "RelationshipCache_Contact_far_contact_id_01.phone_primary.phone",
              "permission_near_to_far:label",
              "permission_far_to_near:label",
              "is_active"
            ],
            "orderBy": [],
            "where": [],
            "groupBy": [],
            "join": [
              [
                "Contact AS RelationshipCache_Contact_far_contact_id_01",
                "LEFT",
                [
                  "far_contact_id",
                  "=",
                  "RelationshipCache_Contact_far_contact_id_01.id"
                ]
              ],
              [
                "Case AS RelationshipCache_Case_case_id_01",
                "LEFT",
                [
                  "case_id",
                  "=",
                  "RelationshipCache_Case_case_id_01.id"
                ]
              ]
            ],
            "having": []
          }
        }
      ],
      "match": [
        "name"
      ]
    }
  ],
  [
    "SearchDisplay",
    "save",
    {
      "records": [
        {
          "name": "Contact_Summary_Relationships_Active",
          "label": "Contact Summary Relationships Active",
          "saved_search_id.name": "Contact_Summary_Relationships",
          "type": "table",
          "settings": {
            "description": null,
            "sort": [],
            "limit": 50,
            "pager": {
              "hide_single": true,
              "expose_limit": true
            },
            "placeholder": 5,
            "columns": [
              {
                "type": "field",
                "key": "near_relation:label",
                "dataType": "String",
                "label": "Relationship",
                "sortable": true,
                "icons": [
                  {
                    "field": "permission_far_to_near:icon",
                    "side": "left"
                  }
                ]
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.display_name",
                "dataType": "String",
                "label": "With",
                "sortable": true,
                "icons": [
                  {
                    "field": "RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon",
                    "side": "left"
                  },
                  {
                    "field": "RelationshipCache_Contact_far_contact_id_01.contact_type:icon",
                    "side": "left"
                  },
                  {
                    "field": "permission_near_to_far:icon",
                    "side": "right"
                  }
                ],
                "link": {
                  "path": "",
                  "entity": "Contact",
                  "action": "view",
                  "join": "RelationshipCache_Contact_far_contact_id_01",
                  "target": "_blank"
                },
                "title": "View Related Contact"
              },
              {
                "type": "field",
                "key": "start_date",
                "dataType": "Date",
                "label": "Dates",
                "sortable": true,
                "rewrite": "[start_date] - [end_date]"
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.address_primary.city",
                "dataType": "String",
                "label": "City",
                "sortable": true
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label",
                "dataType": "Integer",
                "label": "State/Prov",
                "sortable": true
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.email_primary.email",
                "dataType": "String",
                "label": "Email",
                "sortable": true,
                "icons": [
                  {
                    "icon": "fa-ban",
                    "side": "left",
                    "if": [
                      "RelationshipCache_Contact_far_contact_id_01.do_not_email",
                      "=",
                      true
                    ]
                  }
                ]
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.phone_primary.phone",
                "dataType": "String",
                "label": "Phone",
                "sortable": true,
                "icons": [
                  {
                    "icon": "fa-ban",
                    "side": "left",
                    "if": [
                      "RelationshipCache_Contact_far_contact_id_01.do_not_phone",
                      "=",
                      true
                    ]
                  }
                ]
              },
              {
                "text": "",
                "style": "default",
                "size": "btn-xs",
                "icon": "fa-bars",
                "links": [
                  {
                    "entity": "Relationship",
                    "action": "view",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-external-link",
                    "text": "View Relationship",
                    "style": "default",
                    "path": "",
                    "task": "",
                    "condition": []
                  },
                  {
                    "entity": "Relationship",
                    "action": "update",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-pencil",
                    "text": "Update Relationship",
                    "style": "default",
                    "path": "",
                    "task": "",
                    "condition": []
                  },
                  {
                    "task": "disable",
                    "entity": "Relationship",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-toggle-off",
                    "text": "Disable Relationship",
                    "style": "default",
                    "path": "",
                    "action": "",
                    "condition": [
                      "is_active",
                      "=",
                      true
                    ]
                  },
                  {
                    "entity": "Relationship",
                    "action": "delete",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-trash",
                    "text": "Delete Relationship",
                    "style": "danger",
                    "path": "",
                    "task": "",
                    "condition": []
                  },
                  {
                    "entity": "Case",
                    "action": "view",
                    "join": "RelationshipCache_Case_case_id_01",
                    "target": "",
                    "icon": "fa-folder-open",
                    "text": "Manage Case",
                    "style": "default",
                    "condition": []
                  }
                ],
                "type": "menu",
                "alignment": "text-right"
              }
            ],
            "actions": false,
            "classes": [
              "table",
              "table-striped"
            ],
            "toolbar": [
              {
                "action": "add",
                "entity": "Relationship",
                "text": "Add Relationship",
                "icon": "fa-plus",
                "style": "primary",
                "target": "crm-popup",
                "join": "",
                "path": "",
                "task": "",
                "condition": []
              }
            ]
          }
        },
        {
          "name": "Contact_Summary_Relationships_Inactive",
          "label": "Contact Summary Relationships Inactive",
          "saved_search_id.name": "Contact_Summary_Relationships",
          "type": "table",
          "settings": {
            "description": "These relationships are Disabled OR have a past End Date.",
            "sort": [],
            "limit": 50,
            "pager": {
              "hide_single": true,
              "expose_limit": true
            },
            "placeholder": 5,
            "columns": [
              {
                "type": "field",
                "key": "near_relation:label",
                "dataType": "String",
                "label": "Relationship",
                "sortable": true,
                "icons": [
                  {
                    "field": "permission_far_to_near:icon",
                    "side": "left"
                  }
                ]
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.display_name",
                "dataType": "String",
                "label": "With",
                "sortable": true,
                "icons": [
                  {
                    "field": "RelationshipCache_Contact_far_contact_id_01.contact_sub_type:icon",
                    "side": "left"
                  },
                  {
                    "field": "RelationshipCache_Contact_far_contact_id_01.contact_type:icon",
                    "side": "left"
                  },
                  {
                    "field": "permission_near_to_far:icon",
                    "side": "right"
                  }
                ],
                "link": {
                  "path": "",
                  "entity": "Contact",
                  "action": "view",
                  "join": "RelationshipCache_Contact_far_contact_id_01",
                  "target": "_blank"
                },
                "title": "View Related Contact"
              },
              {
                "type": "field",
                "key": "start_date",
                "dataType": "Date",
                "label": "Dates",
                "sortable": true,
                "rewrite": "[start_date] - [end_date]"
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.address_primary.city",
                "dataType": "String",
                "label": "City",
                "sortable": true
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.address_primary.state_province_id:label",
                "dataType": "Integer",
                "label": "State/Prov",
                "sortable": true
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.email_primary.email",
                "dataType": "String",
                "label": "Email",
                "sortable": true,
                "icons": [
                  {
                    "icon": "fa-ban",
                    "side": "left",
                    "if": [
                      "RelationshipCache_Contact_far_contact_id_01.do_not_email",
                      "=",
                      true
                    ]
                  }
                ]
              },
              {
                "type": "field",
                "key": "RelationshipCache_Contact_far_contact_id_01.phone_primary.phone",
                "dataType": "String",
                "label": "Phone",
                "sortable": true,
                "icons": [
                  {
                    "icon": "fa-ban",
                    "side": "left",
                    "if": [
                      "RelationshipCache_Contact_far_contact_id_01.do_not_phone",
                      "=",
                      true
                    ]
                  }
                ]
              },
              {
                "text": "",
                "style": "default",
                "size": "btn-xs",
                "icon": "fa-bars",
                "links": [
                  {
                    "entity": "Relationship",
                    "action": "view",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-external-link",
                    "text": "View Relationship",
                    "style": "default",
                    "path": "",
                    "task": "",
                    "condition": []
                  },
                  {
                    "entity": "Relationship",
                    "action": "update",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-pencil",
                    "text": "Update Relationship",
                    "style": "default",
                    "path": "",
                    "task": "",
                    "condition": []
                  },
                  {
                    "task": "enable",
                    "entity": "Relationship",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-toggle-on",
                    "text": "Enable Relationship",
                    "style": "default",
                    "path": "",
                    "action": "",
                    "condition": [
                      "is_active",
                      "=",
                      false
                    ]
                  },
                  {
                    "entity": "Relationship",
                    "action": "delete",
                    "join": "",
                    "target": "crm-popup",
                    "icon": "fa-trash",
                    "text": "Delete Relationship",
                    "style": "danger",
                    "path": "",
                    "task": "",
                    "condition": []
                  }
                ],
                "type": "menu",
                "alignment": "text-right"
              }
            ],
            "actions": false,
            "classes": [
              "table",
              "table-striped",
              "disabled"
            ]
          }
        }
      ],
      "match": [
        "saved_search_id",
        "name"
      ]
    }
  ],
  [
    "Afform",
    "save",
    {
      "records": [
        {
          "type": "search",
          "title": "Relationships",
          "permission": [
            "access CiviCRM"
          ],
          "placement": [
            "contact_summary_tab"
          ],
          "icon": "fa-handshake-o",
          "summary_weight": 80,
          "permission_operator": "AND",
          "layout": "<div af-fieldset=\"\">\n  <div class=\"alert alert-warning\">\n    <strong>{{:: ts('Permissioned Relationships:') }}</strong>\n    <i class=\"crm-i fa-eye\"></i> {{:: ts('This contact can be viewed by the other.') }}\n    <i class=\"crm-i fa-pencil-square\"></i> {{:: ts('This contact can be viewed and edited by the other.') }}\n  </div>\n  <crm-search-display-table search-name=\"Contact_Summary_Relationships\" display-name=\"Contact_Summary_Relationships_Active\" filters=\"{near_contact_id: options.contact_id, is_current: true}\"></crm-search-display-table>\n  <crm-search-display-table search-name=\"Contact_Summary_Relationships\" display-name=\"Contact_Summary_Relationships_Inactive\" filters=\"{near_contact_id: options.contact_id, is_current: false}\"></crm-search-display-table>\n</div>\n",
          "name": "afsearchTabRel",
          "modified_date": "2023-11-30 15:10:47",
          "requires": null,
          "entity_type": null,
          "join_entity": null,
          "description": null,
          "summary_contact_type": null,
          "server_route": null,
          "is_public": false,
          "redirect": null,
          "submit_enabled": true,
          "submit_limit": null,
          "create_submission": null,
          "navigation": null
        }
      ]
    }
  ]
]

```
> 3 votes

---
Tags: relationships
---


# Question
Title: Search extension for first name = last name (to purge spam submissions)
Some years back there was a forum discussion about a custom search to find contacts where the first name was equal to the last name, which is (or was) common for spam submissions that ended up generating contacts.

A custom search was shared but I was curious if anyone had this working on a more recent version of CiviCRM via an extension. (If not, I may play with that).

# Answer
> 2 votes
CiviCRM 5.69+ can do this with SearchKit. *Entity* is **Contact**. Under *Where*, select `First Name`, `=`, then change `Value` to `Field`. Then you can select `Last Name`.

# Answer
> 3 votes
Now that I got my computer set up with `buildkit`, I had a chance to play further with `civix` and built a simple "first name = last name" search extension to test this out and practice the basics of `civix`.

If anyone wants to try it let me know how it goes:

https://github.com/CEDC/org.cedc.namename

# Answer
> 1 votes
Maybe the extension you are looking for is https://civicrm.org/extensions/aug-searches .

---
Tags: extension, custom-search, spam
---


title: Search Kit Issues

text:
# Question
Title: Search Kit Issues
I truly appreciate the help I have been given with my various issues. I have applied the fixes in my test site and they work just fine however when I opened SearchKit in my production site to apply them there I now see this displayed

Joomla 4.4.1 , PHP 8.1 , Civi 5.67.1

I have to ask again , what the heck is causing this?

Thanks Coleman , this is what is being displayed in my browser console

Expanded Trace:

# Answer
It's a javascript crash, which can be caused by a few different things. Could be a misconfiguration in Civi, or in Joomla, or in your theme or one of your extensions. First step is to open your browser console to see what the error message is & get as much info as you can about it & include it in your question.
> 1 votes

---
Tags: searchkit
---


# Question
Title: Show first name and then last name in activity search results
In my organization we have specific needs with the search for activities. In the activity search results we **want to show the results of the "With" column first the First Name and then the Last Name** and currently we have it the other way around.

It is possible to modify the order of how the name is displayed in the activity search results column?

# Answer
> 2 votes
Depends on what you want exactly. You can define the way in which the display name and sort name are constructed in Administer\>Customize Data and Screens\>Display Preferences. But that will affect the way it is built up all over the system, not just in the activity search. And this is typically a setting you configure at the start of your CiviCRM usage. It does not update all the existing contacts automatically if you change the settings, just do it differently when you change a contact.

The other alternative would be to customize the activity search programmatically to adjust the display name only on the activity search.

---
Tags: activities, search, search-results, admin
---


# Question
Title: Undefined constant "DRUPAL_ROOT" In civicrm.settings.php when running cv api job.execute
I'm trying to run cron with cv and I get this error. The site itself loads fine.

```
$ cv api job.execute --user=admin

In civicrm.settings.php line 97:

  Undefined constant "DRUPAL_ROOT"

api3 [--in IN] [--out OUT] [--flat [FLAT]] [-T|--out=table] [-I|--out=list] [--level LEVEL] [--hostname HOSTNAME] [-t|--test] [-U|--user USER] [--] <Entity.action> [<key=value>...]

```

Line 97 is

```
$civicrm_paths['civicrm.files']['path'] = DRUPAL_ROOT . '/files/civicrm';

```

Why would cv not has access to the DRUPAL\_ROOT constant? We're on Drupal 10.

# Answer
It's possible with cv that that file is parsed before cms bootstrap.

But in any case I would just replace that line with the full path. In a normal install it just puts in the full path for that line.
> 0 votes

---
Tags: drupal, cron, cv
---


title: Report on form submission

text:
# Question
Title: Report on form submission
I was wondering if it is possible to generate some statistics on how many people have completed our newsletter subscription form (which runs as a Drupal webform with various custom fields, we have quite a complicated setup for different newsletters in various languages). It would be cool to be able to share with staff how many signups we are getting each month to be able to spot trends etc.

Thanks!

# Answer
> 1 votes
You can just get this from the webform results tab. It's in a different spot for drupal 7 vs 8, but both have a results table. You can also download it.

---
Tags: reports
---


title: Bounce processing email services?

text:
# Question
Title: Bounce processing email services?
I have a client who's organization's email is managed by an Austrian company called MyMagenta. Apparently it is related to T-Mobile. We thought that we could handle bounce processing in CiviCRM by creating an account for it in MyMagenta and using that, but apparently they don't allow external 3rd party logins via API or command line.

So I thought, OK, we'll create a gmail account for that. But Google dropped support for "less secure apps" last year. Then I though OK, I know we are using Gsuite for that with CiviCRM, I'll just create an email account for them in our GSuite account. But on the way to do that, I discovered a Google announcement that this feature would be dropped from GSuite as well by Fall of 2024.

So, I completed this and we're good for now. But come Fall of 2024, I have a half dozen CiviCRM sites that will need bounce processing email accounts that allow what Google calls "less secure apps". What do you all use?

I am religious about NOT maintaining my own mail server. Been there, done that. Too much of a time suck. I need an email service to do that. Suggestions?

# Answer
> 1 votes
For bounce processing/inbound you shouldn't need "less secure apps" to use google, but you do need to enable the built-in extension "oauth client", and then follow some steps at https://docs.civicrm.org/sysadmin/en/latest/setup/oauth/#enable-the-module and then where it says "adding an account via oauth" at https://docs.civicrm.org/sysadmin/en/latest/setup/civimail/#oauth

---
Tags: civimail, email, bounce-processing
---


# Question
Title: FormBuilder's "In Groups" field does not support permissions
When using the field "In Groups" in FormBuilder it does not limit the groups to the ones I have ACL permissions to but lists them all. Other groups selections in CiviCRM do this. Is this by intention or wrong behaviour?

# Answer
> 1 votes
This is a known issue, being tracked here:

https://lab.civicrm.org/dev/core/-/issues/4513

---
Tags: groups, formbuilder
---


# Question
Title: Civicrm PHP MySQL Driver (libmysqlclient) on WP
after an upgrade of WP and Civicrm I am getting the following message:

PHP MySQL Driver (libmysqlclient) It is recommended, though not yet required, to upgrade your PHP MySQL driver (libmysqlclient) to \>= 5.5.3 for utf8mb4 support.

This is a message that also apprears upon making a new installation of Civicrm.

My environment from Phpmyadmin is as follows:

Database server Server: Localhost via UNIX socket Server type: MariaDB Server connection: SSL is not being used Documentation Server version: 10.5.22-MariaDB-cll-lve - MariaDB Server Protocol version: 10 User: cpses\_kee3y1i26i@localhost Server charset: UTF-8 Unicode (utf8mb4) Web server cpsrvd 11.110.0.15 Database client version: libmysql - mysqlnd 8.1.16 PHP extension: mysqli Documentation curl Documentation mbstring Documentation PHP version: 8.1.16

It looks like the utf8mb4 is already supported, so I am at a loss as to how to proceed. Can you help?

Thank you in advance.

# Answer
> 0 votes
All that I am getting is what looks like a version number: 3.1.22

---
Tags: utf8mb4
---


# Question
Title: DB upgrade Error on CIVI CRM 5.66.0 Joomla 4
On update to civi 5.66.0 on Joomla 4 installation fine on DB upgrade it display error CRM\_Core\_Permission\_Drupal6 Compile Error: Cannot make non static method CRM\_Core\_Permission\_Base::getModulePermissions() static in class CRM\_Core\_Permission\_Drupal6 /administrator/components/com\_civicrm/civicrm/CRM/Core/Permission/Drupal6.php:195

any idea is it bug or any files need to be removed. Joomla 4.3 error remain same on PHP 7.4 and PHP 8.1, 8.0

# Answer
These bugs occur when you forget to delete the CiviCRM directory before replacing it with the new one. The Joomla installer, unfortunately, does not do this for you, so an obsolete file such as `CRM/Core/Permission/Drupal6.php` which has been deleted in the new version of CiviCRM will stick around on your server, causing problems.

You must *delete* the entire `civicrm` directory and replace it with the new one, to make sure old files are properly deleted.
> 1 votes

# Answer
Thank you Colman for your answer. But how to do to not loose :

* customizations ?
* extension ?

Of course, we have to keep both settings files.

And in Joomla!, you have to think do delete `civicrm` in component, in administrator/component and in media. Is there another location to delete `civicrm` ?
> 0 votes

# Answer
Only copy setting.php in Joomla admin civi folder. do not use older folder as it has the older file not removed in the udpates. the extensions are in the media folder so no change there.
> 0 votes

---
Tags: upgrade, joomla
---


# Question
Title: CiviCRM Upgrade Fails Between 5.65.2 and 5.67.3
I am trying to upgrade between CiviCRM 5.65.2 and 5.67.3. My CMS is Drupal 9.5.

During the upgrade I get the following error.

Upgrade DB to 5.65.alpha1: SQL (CRM\_Upgrade\_Incremental\_php\_FiveSixtyFive::runSql(5.65.alpha1))

Cannot execute CREATE TABLE `snap_civicrm_v5_65_group` ROW\_FORMAT=COMPRESSED AS SELECT id, name, title, frontend\_title, description, frontend\_description FROM civicrm\_group WHERE name IS NULL OR frontend\_title IS NULL OR frontend\_title = "" OR frontend\_description IS NULL OR frontend\_description = "": DB Error: no such field

I have checked and my DB User has "GRANT ALL PRIVILEGES"

```
GRANT ALL PRIVILEGES ON `civicrm_prod`.* TO 'civi_user'@'%'

```

I am not sure how to get more information about this error to resolve this. Any help is greatly appreciated.

Thanks!

# Answer
Looking at this further, it appears the issue is that my civicrm\_group table does not have a title or a frontend\_title. I have title\_ each of my languages and the same for frontend\_title. For example: frontend\_titlle\_en\_US and frontend\_title\_es\_ES

Tracing it a bit past that I found that the issue did not appear to be related to the upgrade script.

I did not know much about the database snapshots taken but I had a hunch it came from there.

I change the "CIVICRM\_UPGRADE\_SNAPSHOT" variable to FALSE. I was able to continue the upgrade with the cv command past where it was failing before.

I am going to look at this bit further and try and put in a ticket on CiviCRM GitLab. I am guessing the issue is with Snapshots and multi-lingual tables.
> 0 votes

---
Tags: upgrade, database
---


# Question
Title: civicrm membership sync module for backdrop null array
Similar question

I've the same problem with new installation of CiviCRM in Backdrop on my own Debian 12 machine:

```
array_keys(): Argument #1 ($array) must be of type array, null given

```

when trying to set up a Association Rule for matching CiviCRM Group Administrators to Backdrop Role Administrator.

In the log nothing more IMO:

```
TypeError: array_keys(): Argument #1 ($array) must be of type array, null given in array_keys() (line 586 of /var/www/html/backdrop/modules/civicrm/backdrop/modules/civicrm_group_roles/civicrm_group_roles.module).

Backdrop CMS: 1.26.2 PHP Version: 8.2.7 CiviCRM: 5.67.3

```

# Answer
> 1 votes
Regression from recent changes in https://github.com/civicrm/civicrm-backdrop/pull/150

Fix: https://github.com/civicrm/civicrm-backdrop/pull/169/files

Patch: https://patch-diff.githubusercontent.com/raw/civicrm/civicrm-backdrop/pull/169.patch

---
Tags: civimember, error, backdrop
---


# Question
Title: Outbound email IS working but warning Outbound Email Disabled is still shown
I have a civiCRM install (v. 5.67.3) working fine with backdrop (v. 1.26.2), emails are being sent, also the test mail on the SMTP config screen, but there is still a warning message, on civiCRM status page, about outbound email being disabled:

```
Warning: Outbound email is disabled in system settings. Proper settings should be enabled on production servers.

```

I cannot see where the problem is. Any clues? Thanks.

# Answer
> 0 votes
If you go to administer - system settings - outbound mail, what does it have there? And when you say "emails are being sent", are they actually being received?

Note also it's possible to override what's on that admin screen with a setting in civicrm.settings.php, so if that screen gives a popup about it being overridden, check in the settings file.

# Answer
> 0 votes
Unsetting CIVICRM\_MAIL\_LOG on civicrm.settings.php gets rid of the warning, but I lose my logs, of course, which were, BTW, working fine (the file was being populated with new entries for each sent email). Does this make any sense??

---
Tags: email, backdrop, outbound-email
---


# Question
Title: Provide warning for mailings that are being edited by another user
Is there any way we can be warned that another user is editing a draft mailing?

We have multiple users who might need to edit the same mailing. Unfortunately, this creates the possibility that someone leaves the mailing open and someone else opens it and begins editing, leading to errors and the mailing not being saved correctly.

Many thanks.

# Answer
> 2 votes
I don't think there is any setting in the UI or published extensions that can lock the Mailing screen if already been edited by someone else since X time.

But this can be achieved by writing custom extensions to check if anyone is on the same screen etc

---
Tags: civimail
---


# Question
Title: Is Google Pay enabled with CiviCRM/Wordpress/Stripe?
**Short version:** One of our members attempted to pay a membership fee with Google Pay using our online form and it failed with an "invalid request" error.

I hope I'm just missing something obvious.

Is there anything I need to do to specifically enable Google Pay? Or is it not supported, in which case, how can I prevent the Chrome browser from displaying the GooglePay ("G Pay") button and instead give the usual credit card interface on our contribution form(s)?

Thanks in advance for any ideas!

**Our install:** CiviCRM: 5.52.3 Stripe Payment Processor: 6.7.10 WordPress: 6.0.2 PHP: 7.4.29 Host: CiviHosting

**The issue:** We're a small non-profit membership-based organization of 235 members. We've been running CiviCRM just over a year and taken many payments for membership and event fees by credit card online.

We had a first-time problem this week: a member attempted to renew his membership and pay the annual dues with Google Pay and got an "invalid request" error. This is the first time someone's tried Google Pay on our site, as far as I know.

He was using a Chrome Browser and the browser presented them the G Pay button, presumably because they setup the Google Pay browser extension. The button replaces the usual credit card field on the form.

**Findings/Effort to this point:**

Our president did a quick test and replicated the problem with Chrome/GooglePay on his own machine. Perhaps obviously, this seems specific to (Google's) Chrome browser.

Our Stripe control panel shows no payment attempt correlating with this user's transaction. This supports my thinking that the the error occurred on the form before submission even attempted.

I have searched CiviCRM System Admin and Stripe Extension documentation for settings/setup to specifically enable Google Pay through CiviCRM with no joy. I found no mention of Google Pay at all.

I did find that Stripe (the service) supports Google Pay.

I've been through each of the Contribution admin settings looking for an option to enable Google Pay. Again, no mention.

I've found no similar questions or discussion here on the CiviCRM StackExchange.

I have not looked at/traced errors on the server, but will gladly try, if that will help.

---

**Update 30 November 2022**

Thanks to everyone who looked-in, and to Guillaume Sorel for the response. Main takeaway lesson for me: the payment/credit card form on a CiviCRM Contribution page is simply a passthrough from Stripe, and is not controlled by any CiviCRM code. Therefore not selectable/editable by a basic user like myself.

TLDR; We haven't actually learned how to make GooglePay work with our Contribution forms, but we turned off GooglePay in Stripe, and hope that is why we have not had a recurrence of the error.

In our case, GooglePay was indeed turned on in the Stripe backend, but the the affected user still got the error. He said he had the error using the Chrome browser but not in a different (unknown) browser. I could not independently confirm that behavior.

We turned-off GooglePay using our Stripe account interface with hopes that the form on our Contribution pages will no longer offer it. Only a tiny fraction of our users (1) have even tried GooglePay, so we feel we'll be OK with the standard credit card interface.

We have not had a user with this problem again.

---

We had a new, perhaps similar, problem earlier today. I mention it here in the event anyone else experiences it.

Stripe apparently turned on the "Link" feature on our account, though we did not ask for it. Link is a service that will save your credit card information to allow one-click payment. It requires users register for a link account.

I have no such Link account, but saw the Link bar/button on all of our Contribution pages instead of the standard credit card entry form. There was no other choice - no way around it - and clicking the bar/button yielded an "Invalid Request" error window. Screen captures:

I confirmed this behavior with another user, who saw the same things. It occurred in both Chrome and Safari browsers. Neither browser had a Link app/extension or similar installed. Neither user had a Link account.

So we turned that feature off in Stripe, using the account owner's online admin interface.

It took at least 8 hours (to propagate the change?), but the button did finally go away and the usual credit card form returned. Whew.

---

For reference, our current configuration is: CiviCRM: 5.52.3; Stripe Payment Processor: 6.7.13 (updated); WordPress: 6.1.1 (updated), PHP: 7.4.29; Host: CiviHosting

# Answer
> 2 votes
is Google Pay set as active in the Stripe backend? IMO I would more look at Stripe's side rather than at CiviCRM's one as the means of payment are managed directly by Stripe. The Stripe extension is a payment gateway, what happens behind "shouldn't" perturb CiviCRM. Have you submitted your issue on chat.civicrm.org? There's a Stripe dedicated channel.

# Answer
> 0 votes
Just in case others are seeing this behaviour, we had to remove the "Currency" value in Stripe Settings: /civicrm/admin/setting/stripe in order for Google Pay to stop showing for logged in users.

Turns out that even if the Payment Methods are disabled in Stripe dashboard, the client code can still enable them. It's a feature, apparently(!)

Solution from: https://lab.civicrm.org/extensions/stripe/-/issues/362

---
Tags: wordpress, stripe, payment, google
---


# Question
Title: URL of images added by KCFinder are wrong
When I click Browse Server within the Image Properties modal, I can see the list of images (the URL is correct). However, after clicking on an image to be added to the editor, the URL becomes incorrect. For some reason KCFinder removes `wp` from `wp-content`. The URL something like this: https://mysite.local/-content/uploads/civicrm/persist/contribute/images/image.png

# Answer
Problem fixed overriding `['cms.root']['path']` on civicrm.settings.php file.
> 2 votes

# Answer
Can you check your resource URL settings?

CiviCRM \>\> Administer \>\> System Settings \>\> Resource URL.
> 1 votes

---
Tags: wordpress, kcfinder
---


# Question
Title: PayPalIPN: Could not find an entry for module
We get an error when PayPal is trying to confirm payment. In a nice letter Paypal tells us about the problem and shows the offending link, which is `.../administrator/components/com_civicrm/civicrm/CRM/Core/Payment/PayPalIPN.php`. Opening that link gives the following backtrace:

```
CRM_Core_Exception: PayPalIPN: Could not find an entry for module in ...com_civicrm/civicrm/CRM/Core/Payment/PayPalIPN.php on line 315
Exception trace
#   Function    Location
0   CRM_Core_Payment_PayPalIPN->retrieve('module', 'String')    ...com_civicrm/civicrm/CRM/Core/Payment/PayPalIPN.php:315
1   CRM_Core_Payment_PayPalIPN->main()  ...com_civicrm/civicrm/CRM/Core/Payment/PayPalImpl.php:780
2   CRM_Core_Payment_PayPalImpl::handlePaymentNotification()    ...com_civicrm/civicrm/CRM/Core/Payment.php:1379
3   CRM_Core_Payment::handlePaymentMethod('handlePaymentNot…', Array)   ...com_civicrm/civicrm/CRM/Core/Payment.php:1281
4   CRM_Core_Payment::handleIPN()   ...com_civicrm/civicrm/CRM/Core/Invoke.php:275
5   CRM_Core_Invoke::runItem(Array) ...com_civicrm/civicrm/CRM/Core/Invoke.php:84
6   CRM_Core_Invoke::_invoke(Array) ...com_civicrm/civicrm/CRM/Core/Invoke.php:52
7   CRM_Core_Invoke::invoke(Array)  ...com_civicrm/civicrm.php:96
8   civicrm_invoke()    ...com_civicrm/civicrm.php:11
9   require_once('/var/www/events/…')   ...libraries/src/Component/ComponentHelper.php:382
10  Joomla\CMS\Component\ComponentHelper::executeComponent('/var/www/events/…') ...libraries/src/Component/ComponentHelper.php:357
11  Joomla\CMS\Component\ComponentHelper::renderComponent('com_civicrm')    ...libraries/src/Application/SiteApplication.php:194
12  Joomla\CMS\Application\SiteApplication->dispatch()  ...libraries/src/Application/SiteApplication.php:233
13  Joomla\CMS\Application\SiteApplication->doExecute() ...libraries/src/Application/CMSApplication.php:195
14  Joomla\CMS\Application\CMSApplication->execute()    ...index.php:49
15  {main}

```

Any ideas on what to do to debug? We're using Joomla 3.8.12 and Civi 5.4.1.

Update: I'm looking at the code there which says:

```
$component = $this->retrieve('module', 'String');

```

I'm suspecting that this means that it's trying to retrieve the module part of the calling URL (`/administrator/components/com_civicrm/civicrm/CRM/Core/Payment/PayPalIPN.php`). So this URL is malformed for the IPN, right?

How does the `retrieve()` work?

UPDATE: When entering URL `.../administrator/components/com_civicrm/civicrm/extern/ipn.php` I get

```
The transaction has failed. Please review the log for more detail

```

and in the `civicrm_system_log` database table there is an entry, but with an empty "context" field, in which I suspect the transactionID etc. is supposed to be. This is natural in this case.

So I updated the IPN URL in the Paypal account to this and tried a resend of the latest failed IPN. It failed again, and even with the update URL I get a log entry in the `civicrm_system_log` table.

So it seems that Paypal has no "context" info for the transaction.

I've also checked that the URL does not redirect (using Redirect Checker), since this question seem to indicate that you loose POST data on redirect (which seems odd, but WTH and JIC).

# Answer
I am also facing the same issue on my WordPress site, please let me know if you have any solution to this. It was working fine till 15th November, now I am facing issue only for organization memberships, other PayPal contributions are working smoothly.

I am getting this in CiviCRM error logs-

Dec 07 17:43:14 \[debug\] PayPalIPN: Could not find an entry for module

Dec 07 17:43:14 \[error\] ipn\_payment\_callback\_exception

Array (

\[context\] =\> Array

(

\[backtrace\] =\> #0 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Payment/PayPalIPN.php(296): CRM\_Core\_Payment\_PayPalIPN-\>retrieve('module', 'String')

#1 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Payment/PayPalImpl.php(740): CRM\_Core\_Payment\_PayPalIPN-\>main()

#2 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Payment.php(1594): CRM\_Core\_Payment\_PayPalImpl::handlePaymentNotification()

#3 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Payment.php(1485): CRM\_Core\_Payment::handlePaymentMethod('handlePaymentNo...', Array)

#4 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(278): CRM\_Core\_Payment::handleIPN()

#5 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(68): CRM\_Core\_Invoke::runItem(Array)

#6 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(36): CRM\_Core\_Invoke::\_invoke(Array)

#7 /home/xyz/public\_html/wp-content/plugins/civicrm/civicrm.php(1535): CRM\_Core\_Invoke::invoke(Array)

#8 /home/xyz/public\_html/wp-content/plugins/civicrm/includes/civicrm.basepage.php(352): CiviCRM\_For\_WordPress-\>invoke()

#9 /home/xyz/public\_html/wp-includes/class-wp-hook.php(308): CiviCRM\_For\_WordPress\_Basepage-\>basepage\_handler(Object(WP))

#10 /home/xyz/public\_html/wp-includes/class-wp-hook.php(332): WP\_Hook-\>apply\_filters(NULL, Array)

#11 /home/xyz/public\_html/wp-includes/plugin.php(565): WP\_Hook-\>do\_action(Array)

#12 /home/xyz/public\_html/wp-includes/class-wp.php(797): do\_action\_ref\_array('wp', Array)

#13 /home/xyz/public\_html/wp-includes/functions.php(1332): WP-\>main('')

#14 /home/xyz/public\_html/wp-blog-header.php(16): wp()

#15 /home/xyz/public\_html/index.php(17): require('/home/xyz/...')

#16

{main} \[message\] =\> PayPalIPN: Could not find an entry for module )

)
> 0 votes

---
Tags: paypal, ipn
---


title: Civimobile opens then closes

text:
# Question
Title: Civimobile opens then closes
Civimobile has been working fine for a couple months now. Now when I try to open the app on my mobile phone, it opens fine, flashes a calendar page, and immediately closes. I have checked to make sure all of the Civimobile apps are enabled under Settings. This is an urgent issue so any help would be appreciated.

# Answer
> 1 votes
I have a similar problem here. Event calendar: click on a session and the app closes. The issue is with the favourites. After deleting all entries from the database the app is doing fine. I noticed that this was the only difference between those sessions that closed and those that didn't.

# Answer
> 0 votes
Version 5.67.0 CiviCRM running on Drupal 10 and Android CiviMobile 6.2.3 (Nov 2, 2023 version) has the same issue.

---
Tags: civimobile
---


# Question
Title: How to get the "Modified by" data in a SearchKit query?
In a SearchKit query, how can we get the values of the field "Modified by" that can be seen in the change log of a contact? For what is worth, we have advanced logging enabled ("Logging: Yes" in settings).

I want to build a "Recent Changes" saved search. This is the closest I'm getting:

* Search for: Contacts and Contact Logs (I have tried with Contact Reports as well)
* Where Modified Date is Last 7 Days Including Today (this works)
* Display Name for the Contact Modified (this works)
* Modified Date for the date modified (this works)
* "Contact Logs: Modified By Display Name" only shows data when the user modifies their own contact card. If they modify other contact cards, this value is empty.

I can see the Modified By / Altered By logs in the contact cards. I have tried with values from Contact Reports but they don't bring any values. What am I missing?

I thought it could be a problem of permissions but I'm an admin and "Bypass Permissions" in the table won't make any difference.

If there is an entirely different way to get a list of Recent Changes, that would be useful to know too.

# Answer
> 2 votes
The advanced logging tables do not have an api4 entity. Even if they did, the civireport that shows you the changes uses a diffing algorithm you'd have to somehow replicate because the advanced logs do not store *changes*, they store *copies* of the changed record.

What you're able to get in your description is coming from various fields on the contact record and from civicrm\_log (the Log api4 entity - which is not the advanced logging and just has some basic info). I don't think you'll be able to get much more than what you've got, except you haven't mentioned Advanced Search - it has a changelog section which is basically the same as civicrm\_log, but you can make a saved search from it.

---
Tags: searchkit, user-account, logs
---


title: add new extension disabled by sys admin

text:
# Question
Title: add new extension disabled by sys admin
wp 6.2 civi 5.6.2 i can't add an extension because "add new" is disabled. Can i enable somewhere. I know how to install manually but would like this feature for other staff

# Answer
> 3 votes
It has probably been set in civicrm.settings.php as per https://docs.civicrm.org/sysadmin/en/latest/customize/extensions/#advanced-disable-automatic-installations-of-extension

`$civicrm_setting['Extension Preferences']['ext_repo_url'] = false;`

Either remove that or comment it out.

---
Tags: extension
---


# Question
Title: How can I enable the change log collapsible field on adding new contacts?
I have seen this field before, but suddenly it disappeared and there is nowhere I can find to enable it, it's a collapsible field that allows you to select with a radio button the date created and date modified.

Even if I have it selected in display preferences, it's still not displaying. Tried to add a custom field for it to no avail...

# Answer
Logging turned on/off at /civicrm/admin/setting/misc?reset=1
> 1 votes

# Answer
It's been 5 years since you asked, but... there is a "View Change Log" link at the footer of contact pages:

Your screenshot is from the Advanced Search. If the Change Log section is enabled in the corresponding Display Preferences setting, that section should appear.

Your question mentions "on adding new contacts". No Change Log section is expected in the page to add new contacts. Among other reasons, the contact doesn't exist yet and it has no changes logged. :)
> 0 votes

---
Tags: logs
---


# Question
Title: Is it possible to use a URL format "https://[something]/[Tag]" to generate lists of contacts or activities using that Tag?
SearchKit and FormBuilder are a fantastic couple and I'm creating various reports and dashlets for my CRM colleagues. I have a display showing all tags sorted by the amount of times they are used in contacts and activities. I would like to make the tags clickable and pointing to a page listing the contacts or the activities using that tag. It is possible to create these links using "https://\[something\]" + "Tag" but I can't find that \[something\].

Is it possible to construct these URLs with SearchKit or CiviCRM's older search engines? Or is there a different way to resolve this problem? Finding pages using a tag is a relatively common use case.

# Answer
Yes, you can do this with SearchKit + FormBuilder.

1. Create a search for Contacts
2. Add it to a form
3. Add "Contact Tags" as a form filter:
4. Give your form a title and a url (e.g. `civicrm/contacts-by-tag`) and save.
5. Now visit your form e.g. at `http://example.org/civicrm/contacts-by-tag#?tags=4` and FormBuilder will automatically set the title and show you contacts with that tag:
6. In your original search, construct a link to the new form using a token for tag id.
> 2 votes

---
Tags: searchkit, search-results, tags, custom-search, formbuilder
---


# Question
Title: Is it possible to update Activities using the Activity Import tool?
After importing activities, is it possible to update them using the import tool? We want to "fill" data in fields that are empty.

This is possible in Contacts using the External ID field (among others). In the import of activities there is a field for External identifier, but I got an error when I tried to use it. Instead, I created a custom field to identify the activities imported. The Activity Import tool doesn't seem to have a way to detect duplicates and fill data instead of creating a new activity. The documentation doesn't mention anything about updating activities.

EDIT: In case it helps, when mapping imported data to "External identifier", the import reports this problem on the rows using it: "No Matching Contact for External ID:" (and the ID used). This gives the impression that the importer is looking for activities with that external ID, and perhaps if there would be a match an update would be possible? However, if it is not possible to set an External ID, it won't be possible to match it with new imports...

# Answer
> 2 votes
The Import Activity mapping dropdown provides an option for the Activity ID.

Having done your original import you probably then need to do an Activity Export, with the Activity ID, and then do a vlookup or something in your spreadsheet in order to add the new dates (and any other required fields) and import them.

If that does not work then you could check this extension: https://civicrm.org/extensions/api-csv-import-gui

---
Tags: import, activities
---


# Question
Title: Fetch Bounces Failure, Error message: Unknown api version
For some reason, the fetch bounce api method is unrecognized (Fetch Bounces Finished execution of Fetch Bounces with result: Failure, Error message: Unknown api version).

not sure if related to recent php upgrade (8.1) or last Civicrm upgrade (5.66.2). Last functioning fetch bounces (October 27) returned api method as Parameters parsed (and passed to API method): a:2:{s:7:"version";i:3;s:20:"is\_create\_activities";s:1:"0";}

Current failure log message: Fetch Bounces Entity: Job Action: fetch\_bounces
Summary: Starting execution of Fetch Bounces Details: Parameters raw (from db settings): is\_create\_activities=0 Parameters parsed (and passed to API method): a:0:{}

Full message: Starting execution of Fetch Bounces

Any help appreciated!

# Answer
> 1 votes
I might have the same problem, I'm not sure. I've got a client recently updated to php8.1 and civicrm 5.67.1. Their bounce processing (which has been running for many years), now seems to be ignoring everything.

Specifically, the bounce mail is arriving into their mailbox (i.e I see it in the new folder) and the the bounce job runs and it all gets put into the .INBOX.CiviMail.ignored/cur directory, and shows no bounces.

That suggests that there's a parsing of the message that has started failing. I'm pretty sure it's not the php8.1 upgrade, since I have other clients without this symptom that are upgraded to php8.1.

This might be the same issue, it has a PR against it:

https://lab.civicrm.org/dev/core/-/issues/4775

https://github.com/civicrm/civicrm-core/pull/28354

Update: yes, that PR resolved it. After applying the patch, I moved all the messages that were in the ignored mailbox into the new folder and reran the job and all kinds of new bounces showed up.

```
mv .INBOX.CiviMail.ignored/cur/* new/

```

And it's fixed in 5.67.3

Update:

This related issue looks to be closer to what you're experiencing: https://lab.civicrm.org/dev/core/-/issues/2801

That one doesn't have a specific resolution, though it's identified as related.

---
Tags: api, failure, bounce-processing
---


# Question
Title: Scheduled job "Geocode and Parse Addresses" fails with error "Unknown api version"
Started getting this error immediately after upgrading from 5.65 to 5.67. The daily job now fails consistently.

The .log in sites/default/files/civicrm/ConfigAndLog makes no reference to the job name or to the error. The closest thing in the log is "\[warning\] hook\_civicrm\_geofill\_parser should be updated to pass an array of parameter names to CRM\_Utils\_Hook::invoke()" but that has been coming up for a long time and only when an address (USPS) is sanitized and geocoded in the GUI, which continues to work properly.

Drupal 7's admin/reports/dblog doesn't show anything that correlates.

The Geocode provider is Google. The Google Cloud Platform Metrics data isn't showing any errors, though my ability to read that is suspect since I can only find three queries reported in the last 30 days (all successful, all before the CiviCRM upgrade).

Google is also the mapping provider and mapping contacts in CiviCRM continues to work.

Solutions would be great, but I'd be happy for suggestions to continue tracking down the source of the problem. Preferably detailed suggestions, assuming I know my way around is optimistic!

| Component | Version |
| --- | --- |
| PHP | 7.4.33 |
| DB | MariaDB 5.5.5-10.6.16 |
| CMS | Drupal 7.97 |
| CiviCRM | 5.67.1 |
| Geodata Filler | 1.0.0-alpha1 |

# Answer
If you've been on Civi for a while, the job might not have all the required parameters. I just fixed this on a site by changing the parameters on the job from

```
geocoding=1
throttle=1

```

to

```
geocoding=1
parse=0
throttle=1

```

(Adding `parse=0` to the parameters)
> 1 votes

---
Tags: geocoding
---


# Question
Title: Error executing task "Update civicrm_mailing_event_queue to permit deleting records from civicrm_mailing_job"
I just tried to update from 5.66.0 to 5.68.0 and it failed with the following message:

```
Error executing task "Update civicrm_mailing_event_queue to permit deleting records from civicrm_mailing_job"

In FiveSixtySeven.php line 136:

  db error messageconstraint violationmessage DB Error: constraint violation
  sql
  user info
        ALTER TABLE `civicrm_mailing_event_queue`
        ADD CONSTRAINT `FK_civicrm_mailing_event_queue_job_id`
        FOREIGN KEY (`job_id`)
        REFERENCES `civicrm_mailing_job`(`id`) ON DELETE SET NULL
       [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`database_name`.`#sql-alter-21481d-19e5278`, CONSTRAINT `FK_civicrm_mailing_event_queue_job_id` FO
  REIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job` (`id`) ON DELETE SET NULL)]
  debug info DB Error: constraint violation
  debug info
        ALTER TABLE `civicrm_mailing_event_queue`
        ADD CONSTRAINT `FK_civicrm_mailing_event_queue_job_id`
        FOREIGN KEY (`job_id`)
        REFERENCES `civicrm_mailing_job`(`id`) ON DELETE SET NULL
       [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`database_name`.`#sql-alter-21481d-19e5278`, CONSTRAINT `FK_civicrm_mailing_event_queue_job_id` FO
  REIGN KEY (`job_id`) REFERENCES `civicrm_mailing_job` (`id`) ON DELETE SET NULL)]

```

I've managed to get the site live again using `cv upgrade:db --skip` but now I have a bunch of errors in System Status.

Under 'Scheduled Job Failures' I have:

```
Finished execution of Rebuild Smart Group Cache with result: Failure, Error message: DB Error: no such field

```

Under 'Outdated tokens in use' I have:

```
Please review your event_offline_receipt message template and remove references to the token {$dataArray} as it has been replaced by {found within $participants}
Please review your event_offline_receipt message template and remove references to the token {$paidBy} as it has been replaced by {contribution.payment_instrument_id:label}
Please review your event_offline_receipt message template and remove references to the token {$totalTaxAmount} as it has been replaced by {contribution.tax_amount}
Please review your event_offline_receipt message template and remove references to the token {$amount} as it has been replaced by {found within $participants}
Please review your event_offline_receipt message template and remove references to the token {$checkNumber} as it has been replaced by {contribution.check_number}
Please review your event_offline_receipt message template and remove references to the token {$register_date} as it has been replaced by {participant.register_date}
Please review your event_offline_receipt message template and remove references to the token {$receive_date} as it has been replaced by {contribution.receive_date}
Please review your event_offline_receipt message template and remove references to the token {$is_pay_later} as it has been replaced by {contribution.is_pay_later}
Please review your event_offline_receipt message template and remove references to the token {$totalAmount} as it has been replaced by {contribution.total_amount}
Please review your event_offline_receipt message template and remove references to the token {$location} as it has been replaced by {event.location}
Please review your event_offline_receipt message template and remove references to the token {$isShowLocation} as it has been replaced by {event.is_show_location|boolean}
Please review your event_offline_receipt message template and remove references to the token {$event.participant_role} as it has been replaced by {participant.role_id:label}
Please review your event_offline_receipt message template and remove references to the token {balanceAmount} as it has been replaced by {contribution.balance_amount}
Please review your event_offline_receipt message template and remove references to the token {$financialTypeName} as it has been replaced by {contribution.financial_type_id:label}
Please review your event_offline_receipt message template and remove references to the token {$trxn_id} as it has been replaced by {contribution.trxn_id}
Please review your event_online_receipt message template and remove references to the token {`$participant.id`} as it has been replaced by {participant.id}

```

And under the upgrade headings it still shows 5.66.1 through 5.68.0 as upgrade options, even though the 'powered by' footer at the bottom successfully shows 5.68.0.

How do I get everything back to full working order?

Running on Drupal 7.99.

# Answer
It means you have some records in the event queue that don't have a corresponding job. Probably the job got deleted at some point so I wouldn't be worried about that field and would just clear them out first:

`UPDATE civicrm_mailing_event_queue SET job_id = NULL WHERE job_id NOT IN (SELECT id FROM civicrm_mailing_job);`

Then, you can fool civi into thinking you're back on 5.66 by doing `UPDATE civicrm_domain SET version='5.66.0';`

Then re-run the upgrade.
> 1 votes

---
Tags: upgrade, drupal-7, cv
---


title: CiviCRM find all hooks for Event

text:
# Question
Title: CiviCRM find all hooks for Event
I'm looking for any code to find hooks called for edit activity.

Problem we have occurs whil sending mailing, that tooks 1-2min for one send email, I've made some debug and found that this code slows

**/CRM/Mailing/BAO/MailingJob.php::writeToDB**, Bulk Email activity

```
$activity = civicrm_api3('Activity', 'create', $activity);
Params:
Array(
    [source_contact_id] => 12311
    [activity_type_id] => 19
    [source_record_id] => 2082
    [activity_date_time] => 20231205095113
    [subject] => Zaproszenie
    [status_id] => Completed
    [campaign_id] =>
    [id] => 2660265

)

```

I've found that 'civi.api.respond' for this update takes lot of time...

Is there any way to find wich hooks are called while this api3 call ? I've added some debug code in civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php::callListeners

```
\Civi::log()->notice('callListener: ', $listener);

```

But it's not helping..

# Answer
Not entirely sure how searching for activity create hook would help in your case ( which sounds like a DB optimization issue ).

However, let's shoot in the dark and see where it leads us: what if you try to disable the "Enable CiviMail to create activities on delivery" option on this page civicrm/admin/setting/preferences/mailing?reset=1 ? Would this make your mailings faster and the database more responsive?
> 1 votes

---
Tags: civimail, activities
---


# Question
Title: system status page missing after upgrade
Upgraded civicrm from 5.63.2 to 5.66.2. Upgrade finished ok and everything was working ok apart from the system status page being blank. Running on wordpress 6.4.2 and php 7.4.3.

# Answer
> 0 votes
I'd started from the "Settings - Cleanup Caches and Update Paths", accompanied by civicrm / cms / webserver / browser dev console logs inspection

---
Tags: system-status
---


# Question
Title: CiviCRM thinks site is not SSL, redirecting to {url}
I am running CiviCRM 5.64.3 and I have Drupal 9.5. When trying to get to any admin page the site does 302 redirects until the browser (I have tried multiple) reports too many redirects.

In my Drupal Watchdog logs I have an error like this:

```
CiviCRM thinks site is not SSL, redirecting to {url}
        Array
        (
           [url] => https://subdomain.domain.org/civicrm/admin/uf/group?reset=1
        )

```

I have tried clearing caches, upgrading CiviCRM, many admin pages. I have verified using the Chrome Redirect Path extension that all the redirects are from https to https.

This CiviCRM instance works in our production environment. We are transitioning to AWS Elastic Beanstalk (EB). The only thing this would impact is the location of our files directory (e.g., sites/default/files/civicrm). Files are in a remote distributed file system (EFS). The machine running CiviCRM is the only machine accessing those files. I do not think this is the issue as CSS and JS files are being downloaded for non /admin pages.

I also tried upgrading to CiviCRM version 5.67.3 to see if that would fix the problem and it did not.

I appreciate any help that can be provided.

# Answer
> 0 votes
I guess the first thing is if it's not a production site is it actually ssl-enabled? If not, try running `cv ev 'Civi::settings()->set("enableSSL", "0");'` If you don't have cv you can do it directly in the database `UPDATE civicrm_setting SET value='s:1:"0";' WHERE name='enableSSL';`. I suppose you could try running that anyway and see if it makes a difference.

Otherwise do you have a proxy setup? See https://lab.civicrm.org/dev/core/-/issues/425 where it says this can sometimes give a false message.

The exact criteria it's using for this error message is:

```
if (Civi::settings()->get('enableSSL') &&
      !self::isSSL() &&
      strtolower($req_headers['X_FORWARDED_PROTO'] ?? '') != 'https'

WHERE self::isSSL() is !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off';

```

---
Tags: drupal, migration
---


# Question
Title: fetch_bounces - Finished execution of Mail Reports with result: Failure, Error message: is not of type String
Scheduled Job fetch\_bounces produces an Error when job execution:

Finished execution of Mail Reports with result: Failure, Error message: is not of type String

# Answer
> 0 votes
Your screenshots are showing two different jobs. The error is for the mail reports job. Either disable that job or set the correct parameters for it.

---
Tags: civimail
---


title: Contacts and relationships' report

text:
# Question
Title: Contacts and relationships' report
I want to report/view which shows me all contacts in a group, and any relationships they may have. I’ve used the relationships report, but it doesn’t show me everyone in the group. It doesn’t show me those who DONT have any relationships.

Any help much appreciated.

# Answer
> 1 votes
You can do this with SearchKit:

* Search for: Contacts
* With (optional): Related Contacts
* Where: In Groups: Name of your group

---
Tags: relationships
---


# Question
Title: I am trying to install CiviCRM to a Wordpress multisite, and getting an error Uncaught TypeError: method_exists()
I have been following the instructions for installing to Multisite here:

https://docs.civicrm.org/installation/en/latest/multisite/wordpress/

I created a separate civicrm database.

I set the CiviCRM installation (5.68.0) running. It did stuff for a minute or two, then came back with a fatal error.

The PHP log has an error starting with this:

---

```
Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, int given in /home/<userDIR>/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php:2807

```

---

When I go to look at that line in the file, it has this:

```
if (method_exists($result, 'numRows')) {
            if ($_DB_driver == 'DB') {
                $DB->expectError(DB_ERROR_UNSUPPORTED);
            } else {
                $DB->expectError(MDB2_ERROR_UNSUPPORTED);
            }

```

In my searching on the web, I saw some comments that PHP 8 had made it a fatal error if the first parameter to method\_exists() was not a string or an object.

In the stack trace, the first line is:

```
Stack trace:
#0 /home/<userDIR>/public_html/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(2807): method_exists(1, 'numRows')

```

Hence it does seem that $result is passing an integer, not a string or object.

This seems like a check has to be made in the code, but it hasn't been.

# Answer
The problem you're referring to was fixed a long time ago, so it seems you are using a very old version of CiviCRM. Please upgrade to the latest version to get the latest fixes :)
> 0 votes

---
Tags: installation, install, php8
---


# Question
Title: Using the View button on Notes tab returns blank form
I am using CiviCRM 5.68 on WordPress 6.4.2 On Civi contact profiles, when we navigate to the "Notes" tab and click the "View" button, we see a blank form to fill out, not the data we need to read. I have checked other CiviCRM installs I manage and this issue appears on all of them. Is this a bug that can be fixed in the next release?
See screenshots below.

# Answer
Yes this has been reported at https://lab.civicrm.org/dev/core/-/issues/4852. You can follow progress there.
> 1 votes

---
Tags: contacts, bug-reporting, notes, civiprofile
---


title: Profile confirmation email

text:
# Question
Title: Profile confirmation email
Is it possible to have CiviCRM send an email confirmation to the submitter when civicrm/profile/create is used? And if not, what is the best work around? This is on a joomla site running CiviCRM 5.64.4

Context: We are using profile/create accept a request for materials. The materials are free. The profile includes a few contact fields (org name, email etc.) and fields from a custom data set. It is common for folks to request materials more than once. The custom data set allows multiple records that are displayed "Tab with table". Dedupe checking is on and it works great to put each materials request on the tab for the appropriate organization.

We want to send a simple confirmation to the email that submitted the form, and there's no obvious way to do this. Searching, I see several conversations about this as a good feature to add (like this one: https://forum.civicrm.org/index.php%3Ftopic=6679.0.html) and even an old drupal module (https://github.com/emotive/CiviCRM-profile-notification).

Most current conversations seem to propose using the profile to add folks to a group and then turning on double opt in, but since people can make requests multiple times, they would already be in the group on the 2nd and subsequent request, so I'm thinking that would not work, but have not yet tested.

If this isn't possible, can someone recommend a better way to accomplish this goal?

(Also, note that we *are* receiving the confirmation to the emails we have indicated on the profile "Notify when profile form is submitted?", although that is not working quite right because the confirmation email shows the data from the FIRST materials request, not the one that was just added. That's not a big deal since this is internal only and we can confirm the actual request on the tab.)

# Answer
I think it's best to try to confirm the "cached form data" problem on https://civicrm.org/de/demo. If everythings works you could utilize extension civirules for sending nicy html template mail confirmations.
> 0 votes

---
Tags: profile, email, confirmation
---


# Question
Title: SearchKit: how to find largest contributions?
Suppose I want to display a table of largest contribution per contact AND its date.

Consider:

This search produces the contact name, a list of amounts and a list of dates.

Changing the field transformation function of Total Amount from 'List' to 'Max' produces the largest amount. The problem is in getting the date associated with that largest amount.

SK ends up producing an SQL statement, and looking at the problem from a SQL perspective, there is a section of the MySQL manual addressing this. So there are various ways in can be achieved in SQL, but can SK produce such SQL?

Please note: This largest contribution question is just an example of the more general question of selecting data associated with a max/min field with SK, so I'm not looking for solutions involving things like Summary Fields (useful as it is!).

# Answer
> 2 votes
18 months later and SK can now do this with the 'First' transformation:

# Answer
> 0 votes
I played around with this a bit and the closest I got was to create a table of top donations *not* grouped by contact. I know it's not what you asked for, but it could be serviceable. If I were a fundraising officer I'd probably want to know that the top 1, 2, and 3 donations were actually all from the same person rather than have that fact hidden by the GROUP BY which would make it look like the 4th top donation was really the 2nd.

To get exactly what you asked for, we'd probably have to implement the sometimes requested feature of creating a search from the results of another search.

---
Tags: searchkit
---


title: HTML form snippet for contribution page

text:
# Question
Title: HTML form snippet for contribution page
When using CiviCRM with drupal, is there a way of using a HTML form snippet with a contribution page, as is possible with a normal profile? If so could someone direct me as to how to do this?

Thanks! Andrew

# Answer
> 2 votes
CiviCRM inlay gives html snippet that you can embed on any website. It has minimum settings for now.

---
Tags: civicontribute, profile
---


# Question
Title: pre-filling no longer working for membership contribution form, with inbound contact_id tokens, checksum, and "on behalf of"
I am helping a small org get through a membership renewal campaign again this year that has organizational memberships. A report from a user about an error sent me looking to understand what was happening.

To test, I created some fake users and gave them employers as well. So in each case there is an individual and related organizational contact. I have a contribution page that is set to "on behalf of". The page loads. It can be completed and submitted. However when entered with a URL like "https://sitename.org/civicrm/contribute/transact/?reset=1&id=21&cs=c7796dee0e6d34a976aa8a8a7ea7c25b\_1702432880\_168&cid=33557", the header shows the contact's name, the regular name and email profile at the bottom of the page is filled, but the "on behalf of" reserved profile is blank. I swear this worked last year.

I tested this for multiple users with the same result. Interestingly, when I test for my own user, I get the "Membership Organization" values in the "on behalf of" profile. That is, it shows the org I am joining as a member, not the one I "work for". Not really what is intended.

I also tested another site and got the same result of blank "on behalf of" profiles. If I had not used this in previous years I would just assume this function doesn't work, but I'm sure this worked last year.

I'm hoping someone can shed light on this situation or offer thoughts for troubleshooting. Unfortunately, the situation has become somewhat urgent as I didn't catch this before the mailing went out. We'll need to follow up, but I would really like to have something useful to say.

There are no entries of any kind in the Civi or Apache error logs. I'm running 5.68.0 on WordPress 6.4.2 and PHP 8.2.13

UPDATE: Expanding my test set reveals a couple of older contacts where it works. However, looking at their relationships tab and employer field reveal that these contacts don't show their employer relationship on the relationships page. If I try to add it, I get a duplicate error. If I remove their employer, I can add them on the relationships page. However, the employer field does not visibly populate on the summary tab. If I click in to edit, it shows it filled after all, but when I click save to get out to view, it vanishes. Further, once I have removed and re-added the employer/employee relationship in this manner the "on behalf of" form is blank for this contact now too.

I'm wondering if some sort of relationship bug may have been introduced as the interface has started to incorporate SearchKit and FormBuilder interface elements? I am absolutely baffled.

UPDATE 2: @petednz got me started with the answer to my main question, but as I tried to work through that correction, a deeper problem that I had hinted at up above came into full view. I am having a new and serious problem with relationship handling. I will post a new question about that.

# Answer
The most basic answer to this question was as PeteDNZ suggested, a matter of permissions on the relationship.
> 1 votes

---
Tags: civicontribute, profile, relationships
---


title: Is the iATS payment extension secure?

text:
# Question
Title: Is the iATS payment extension secure?
We recently went through a security audit and one finding was that credit card information touches our web server before being routed to iATS. Is this how the iATS extension should work? If so, what are some practical steps that we can take to enhance our security? Do we need to be PCI compliant? Thanks.

# Answer
Here are the short answers:

1. Yes, that's how the (legacy) iATS payment processor included in the iATS extension works.
2. Security enhancement - not really something that can be answered responsibly with a short answer.
3. Any organization that accepts credit cards (i.e. has a merchant account) has to comply with the PCI DSS (Payment Card Industry Data Security Standard). You will have agreed to that as a condition of getting your account with them. In other words, yes, you need to be "PCI Compliant".

And of course, since your title is "is the iATS payment extension secure", I'd claim that it is, since I'm responsible for it. But that's a tiny piece of the real question.

The last one in particular does not do justice to the questions, so here are the longer versions.

1. iATS payments and cardholder data on your server

The iATS CiviCRM extension provides code for 5 different 'payment processors'. Three of them are for a legacy system that accepts the card credentials to the civicrm server and then has a conversation with the payment processing server in the background. The other two use a newer system (FAPS = First American Payment System) that has a clever way of generating an iframe via javascript so that the card credentials do not actually go through your civicrm server, but instead generate a token that is passed to your server and that is used a reference to the card data that only ever lives on the payment processor server. In none of these cases does the cardholder data get written in to CiviCRM, that's a core design of CiviCRM.

iATS Payments is in the process of rolling out a new system that is expected to be "better" than either of these two options, where better is expected to be more secure and easier to use. What would you expect?

2. Generic practical steps to enhance your security

.. abound on the internet, and some of them are useful, and some of them are not, and some of them are downright terrible. I prefer to be specific and look at your current setup and see where the greatest risks are and how they can be minimized.

A few minimal things that you should do are:

* make sure you are set up to monitor and react to security releases all the way up your stack (OS and applications).
* maintain a set of minimal permissions for all authenticated users, and make sure anyone who has any kind of administrative permission (i.e. one that would enable arbitrary code execution) understands the risks associated with their account.
* no shared logins, strong passwords, using 2FA where appropriate. only install code that you reasonably expect is safe (i.e. don't install dodgy plugins)
* monitor the site in lots of ways

Here's the civicrm handbook's wisdom on the topic: https://docs.civicrm.org/sysadmin/en/latest/setup/security/

3. PCI DSS

is a very big document that covers all kinds of things, and is IMHO a way of minimizing the risks of the card mafia by pushing those risks to the merchant with a huge collection of "security" requirements. Those requirements cover not just your website, but every aspect of your organization that is involved with handling cardholder data.

Many of the requirements are reasonable, some of them are incoherent, and some of them really seem pointless to me, and e.g. appear to be based on trying to mitigate past Microsoft Windows breaches.

For smaller organizations handling not too many transactions, your process is to fill out some version of an SAQ (self-assessment questionnaire), e.g. SAQ-A, SAQ-EP, SAQ-D. The version is dependent on the role of your website in handling the cardholder data, roughly a measure of your exposure to risk.

For fully off-site processing, you can use the easiest/shortest one, SAQ-A. If you are handling and storing credit card data on your own server, you have to fill in SAQ-D.

In theory, at this time, using the iATS legacy processor means you "should" be doing the SAQ-D (this changed from the current version 3 of the standard from the previous one, I believe). But ultimately, that's a matter between you and your payment processor. In general, because iATS is specific to non-profits, they seem to bring a more practical approach to the issue.

I do recommend regular automated "scans", which prod all your open ports for known "weaknesses". They'll usually find things that aren't actually risks, but that might be advertisements to bad actors that your systems aren't being kept up to date.
> 1 votes

---
Tags: iats, iatspayments
---


# Question
Title: Drupal 10 requirements status page: CiviCRM tables without a primary key
I am using Drupal version v10.1.6 and CiviCRM 5.67.0.

Drupal suggests to use the `READ-COMMITTED` transaction isolation mode. However, once I switch it on, Drupal complains on the status page:

> The following table(s) do not have a primary key: snap\_civicrm\_v5\_65\_job

What is the best practice here?

# Answer
Specifically for the "snap" tables those are extra backups the upgrade makes. If your upgrade went well you can delete that table. If you normally make backups before upgrade anyway you can turn off snapshots by putting `define('CIVICRM_UPGRADE_SNAPSHOT', FALSE);` in civicrm.settings.php.
> 4 votes

# Answer
Since version 10.1 Drupal recommends READ COMMITTED by default for MySQL transactions, which leads to an error message about missing primary key of civicrm\_install\_canary table at fresh CiviCRM installs as well.

Workaround here could be to add a primary key in mysql:

```
ALTER TABLE civicrm_install_canary ADD PRIMARY KEY (id);

```
> 1 votes

---
Tags: drupal
---