# Question
Title: Event Registration Error on Wordpress 6.3.1 Civi 5.63.4 "Could not find valid value for id"
We've checked the CiviCRM base page (/civicrm), clean URLs enabled, permalinks set to /%postname%/ and CMS integration settings in Civi System Settings are correct.

The "Register" button on the event info page is clicked, rather than a shortcode embedded in a Wordpress page.

Event registration completes but the "Thank You" message configured in the Event settings is not shown (Amounts section and Confirmation page are both disabled as these are free events).

```
$Fatal Error Details = array:3 [
  "message" => "Could not find valid value for id"
  "code" => null
  "exception" => CRM_Core_Exception {#3586
    -errorData: array:1 [
      "error_code" => 0
    ]
    #cause: null
    -_trace: null
    #message: "Could not find valid value for id"
    #code: 0
    #file: "/var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Request.php"
    #line: 98
    trace: {
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Utils/Request.php:98 {
        CRM_Utils_Request::retrieve($name, $type, $store = null, $abort = false, $default = null, $method = 'REQUEST')
        › if (!isset($value) && $abort) {
        ›   throw new CRM_Core_Exception(ts('Could not find valid value for %1', [1 => $name]));
        › }
      }
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Event/StateMachine/Registration.php:27 { …}
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Event/Controller/Registration.php:27 { …}
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:314 { …}
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:69 { …}
      /var/www/html/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php:36 { …}
      /var/www/html/wp-content/plugins/civicrm/civicrm.php:1199 { …}
      /var/www/html/wp-content/plugins/civicrm/includes/civicrm.basepage.php:380 { …}
      /var/www/html/wp-includes/class-wp-hook.php:308 { …}
      /var/www/html/wp-includes/class-wp-hook.php:332 { …}
      /var/www/html/wp-includes/plugin.php:565 { …}
      /var/www/html/wp-includes/class-wp.php:797 { …}
      /var/www/html/wp-includes/functions.php:1334 { …}
      /var/www/html/wp-blog-header.php:16 { …}
      /var/www/html/index.php:17 { …}
    }
  }
]

```

Looking at the redirects below, the browser session is lost. WordPress seems to be doing something to the URL as it has double slashes:-

So the form is posted to:

https://localhost/civicrm//event/register//

302 redirects to:

https://localhost/civicrm//event/register//?\_qf\_ThankYou\_display=true&qfKey=CRMEventControllerRegistration2ue2o3j19k2so0g0sowg8swgcs0w0c8k0kkw404osg8kkwc884\_2058

Seems like WordPress does not like the double slash and does something with redirect\_canonical() which forces another redirect

301 redirects to:

https://localhost/civicrm/event/register/?\_qf\_ThankYou\_display=true&qfKey=CRMEventControllerRegistration2ue2o3j19k2so0g0sowg8swgcs0w0c8k0kkw404osg8kkwc884\_2058

by this time, the session ID has gone and we get could not find value for id.

# Answer
> 2 votes
Finally solved this one... The Nginx conf was doing a "Drupally" rewrite which was upsetting WordPress.

try\_files was appending args in this way:-

```
try_files $uri $uri/ /index.php?q=$uri&$args;

```

And the correct WordPress way:-

```
try_files $uri $uri/ /index.php?$args;

```

---
Tags: wordpress, civievent, nginx
---


title: Triggering hooks upon quick edits

text:
# Question
Title: Triggering hooks upon quick edits
We would like to implement a 'computed' custom field. Meaning a custom field A depends on the values of other custom fields B, C and D. We need this to work when editing the data via the CiviCRM admin or via the API.

In order to achieve this we have started implementing some logic using the hook\_civicrm\_pre.

The current hook works when modifying the contact information by clicking the "Modify" button at the top of the Contact detail page. However it does not work when modifying the data using 'quick edit' (for example clicking directly on the phone number field).

Hence my question:

* how is the 'quick edit' different from the main 'modify' button, is the former using JS + the Civi rest API to modify the data ?
* what type of hook should we use so that it fires upon quick edit actions ?

Thanks!

# Answer
> 3 votes
Stored computed fields can be tricky because if you miss an update the stored value will be outdated. Implementing pre/post hooks *should* catch most updates that go through the UI and API, but of course would miss any updates done via direct SQL query (e.g. the deduping merger will do these).

**Alternatives:**

1. **An APIv4 Calculated Field:** I recommend this if the calculation is not too difficult (e.g. just adding the values of a couple other fields together). The value will always be up-to-date and you won't have to worry about hooks.
2. **Summary Fields Extension:** Provides a framework for stored computed fields (the type you had in mind - a stored value in a custom field) but comes with pre-built management so you don't have to reinvent that wheel yourself.
3. **Synopsis Extension:** Similar to summary fields but more geared toward contact data. This might be what you want.

---
Tags: hooks
---


# Question
Title: ckeditor + Drupal9 gives 403 Forbidden when browsing server
I migrated a D7 site + civi to Drupal 9.

Everything works fine except in the **CKEditor** when I click on "browse server": I get the error **403 Forbidden**. (the URL is MYSITE/libraries/civicrm/packages/kcfinder/browse.php?cms=civicrm&type=images&CKEditor=html\_message&CKEditorFuncNum=0&langCode=en)

I upgraded today to 5.40.2, but I get the same error.

I tried CKEditor 5 (https://civicrm.org/extensions/ckeditor-5), but then I get the error: Invalid backend response. Error occurred on the server side. HTTP error 500.

Does anybody know what the issue could be? htaccess? Folder permissions?

How can I further debug this?

Thanks!

# Answer
> 2 votes
For two days, i couldn't get kcfinder working. After clicking on "browse server" it tries to load the link below and then gives http 403 forbidden.

```
libraries/civicrm/packages/kcfinder/browse.php?cms=civicrm&type=images&CKEditor=crmUiId_1&CKEditorFuncNum=0&langCode=en

```

Yes, i tried putting code under "composer.json in the extra section", followed by "composer civicrm:publish" as suggested here: https://lab.civicrm.org/dev/civicrm-asset-plugin/-/issues/4

While, it did copy the files to libraries/civicrm/packages/kcfinder, it didn't solve the 403 issue.

Note: kcfinder isn't maintained (last update 2014 according to links below)

My solution is TO move to ckeditor5 and its fileManager.

**From the docs**

> An ongoing challenge with ckeditor4 as implemented with CiviCRM is that the filemanager (kcfinder) is pretty hard to work with and requires some hacks to be able to figure out paths.
>
> Integrations. The integration that currently looks most promising is elFinder This is currently being maintained (as opposed to kcfinder which is not). See under fileManager https://lab.civicrm.org/extensions/ckeditor5

Steps to get ckeditor 5 working:

more on docs: https://civicrm.org/extensions/ckeditor-5

If you're using Drupal, you may try this old docs of getting Drupal file manager (IMCE) to work for civicrm.

\**haven't implimented this myself.

https://civicrm.org/it/blog/kurund/enable-image-uploads-and-server-browsing-for-ckeditor

# Answer
> 2 votes
To get ckeditor 4 working in Drupal 9, you have to look at the http error you get:

* 404: means the library cannot be found
* 403, 500: means an access / permission problem

Personally, I had the 404 error first.

When I tried to browse for an image on the server, the url in the window was:

```
libraries/civicrm/packages/kcfinder/browse.php?cms=civicrm&type=images&CKEditor=html_message&CKEditorFuncNum=0&langCode=en

```

But looking at the files on the server, there was no browse.php file in libraries/civicrm/packages/kcfinder

However, in my installation I could find it in vendor/civicrm/civicrm-packages/kcfinder

So I copied the kcfinder directory from vendor to libraries:

```
cp -r vendor/civicrm/civicrm-packages/kcfinder web/libraries/civicrm/packages

```

Now, the browse.php file could be found, but I got an access error.

I solved this by adding the following lines to the .htaccess file.

```
  RewriteCond %{REQUEST_URI} !/libraries/civicrm/packages/kcfinder.*$
  RewriteCond %{REQUEST_URI} !/libraries/civicrm/extern.*$

```

Add these lines above the line:

```
  RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]

```

Next issue was that the civicrm configuration file could not be found. The installation tries to locate the file civicrm.config.php but it was not available.

You should copy this file from a Drupal7 installation to the directory:

```
  web/libraries/civicrm

```

This file tries to fill in the variable $settingsFile with the exact location of civicrm.settings.php.

For some reason, the code could not locate my file. Because I ran out of patience, I replaced:

```
  $settingsFile = civicrm_conf_init() . '/civicrm.settings.php';

```

with the hard coded path of my settings file:

```
  $settngsFile = '/var/www/ (...etc...) sites/default/civicrm.settings.php';

```

I would like to hear from Drupal 9 experts how this can be improved!

# Answer
> 2 votes
I had exactly the same issue and solved the problem with the new Summernote extension.

We needed for various reasons to have access to the underlying code (the old 'Source' toggle to see the underlying HTML) and the current version of CKEditor5 available via the CKEditor5 extension did not support it. There was discussion about merging the newer CKEditor5 code in, which does now have a source editor, but as of writing this it was not yet there.

Installation of Summernote is via the command line, but is very straight forward:

1. Go to your current extensions directory
2. Download the url defined in the download link. For me this was: `wget -vv https://lab.civicrm.org/extensions/summernote/-/archive/1.2.2/summernote-1.2.2.zip`
3. unzip summernote-1.2.2.zip
4. enable the extension either through the UI or just run

`cv en summernote` if your setup requires you to run this as a particular acount use the `--user=my_user` option
5. Go to Administer -\> Customise Data and Screens -\> Display Preferences and select Summernote as your WYSIWYG editor:

6. Check it works as exepected and then clean up by deleting the downloaded Zip file

That's about it - there are some more options available to look at, but we are using successfully straight out of the box with the defaults. This is where to find the other settings in case you need them.

Administer -\> Customise Data and Screens -\> Summernote

So now we have a source editor and the elFinder file browser (this replaces kcfinder) working perfectly under Drupal 10 and CiviCRM 5.66.2 (as of writing). Hope this helps as I suspect many will run into this when upgrading to the latest Drupal.

---
Tags: ckeditor, drupal-9
---


# Question
Title: What does a Syntax bounceback actually mean?
If we have an email bounce back due to "syntax", what does that actually mean? Thank you

# Answer
You can modify the report under Reports - Mail Reports - Bounce Report to include the bounce reason column and it will give more info.
> 1 votes

# Answer
You can see the search patterns that will classify a bounce as syntax here.
> 1 votes

---
Tags: civimail
---


title: Custom javascript file is not refreshed

text:
# Question
Title: Custom javascript file is not refreshed
I embedded a JavaScript file inside a custom extension via the buildForm hook. The file gets loaded and does its job, however it is not reloaded reliably after an update. When I upload a new version of the file it takes quite some time until it is picked up by CiviCRM, sometimes hours. I have cleared caches and disabled asset caching, didn't help. I am on Drupal 9 and CiviCRM 5.67.0. Any help is appreciated.

# Answer
> ... a JavaScript file ... When I upload a new version of the file it takes quite some time until it is picked up by CiviCRM, sometimes hours. I have cleared caches and disabled asset caching, didn't help. ... `composer civicrm:publish` doesn't seem to help with this... I am a total newbie in CiviCRM development and don't understand the caching going on here.

Yeah, there are many layers of caching in real-world systems. Even experienced folks will lose track of them.

**Short thought**: Check the references to your JS file. There should be a "resource caching code" (*random suffix*).

**Long explanation**: These symptoms sound like an issue in the browser-based caching and URL-construction. I don't have a reference to your codebase, so I'll make up an example.

Many HTTP servers enable caching for static files, such as `jquery.min.js`. It works like so:

```
<!-- The HTML page requires `jquery.min.js` -->
<script
  type="text/javascript"
  src="/sites/all/modules/civicrm/bower_components/jquery/dist/jquery.min.js">
</script>

```

```
<!-- So the browser requests the file -->
GET /sites/all/modules/civicrm/bower_components/jquery/dist/jquery.min.js

```

```
<!-- Then the server sends the file along with caching instructions -->
Content-Type: application/javascript
Content-Length: 96830
Cache-Control: max-age=7200

!function(a,b){"object"==typeof...

```

The server tells the browser to cache `jquery.min.js` for 7200 seconds (2 hours) -- which is great for performance but frustrating for deployment. For a clean deployment, one needs a work-around.

In CiviCRM, the *conventional work-around* is to append a random suffix to the URL. For example, I went to this demo page and used "View Source" to find `jquery.min.js`. The actual URL has a suffix `?s3tkpz`.

```
<!-- Here's how the HTML actually references the file -->
<script
  type="text/javascript"
  src="https://dmaster.demo.civicrm.org/sites/all/modules/civicrm
                 /bower_components/jquery/dist/jquery.min.js?s3tkpz">
</script>

```

```
<!-- So the browser requests the file -->
GET /sites/all/modules/civicrm/bower_components/jquery/dist/jquery.min.js?s3tkpz

```

When CiviCRM has a major change on the server-side, it will switch out the suffix.

**`jquery.min.js?s3tkpz` =\> `jquery.min.js?neWc0d3`**

This doesn't actually *clear* the browser caches -- but as far as the browser is concerned, it looks like a different URL for a different file. The old caches become irrelevant. The browser will re-read the file.

This convention is *extremely common* for CiviCRM code. Several methods - like `addScriptFile()` and `addStyleFile()` from Resources API \- will add the code by default. (It's so common that we take for granted...) But it's not absolute or universal. You might need to do one of these:

* Switch to `Civi::resources()->addScriptFile()` or `Civi::resources()->addStyleFile()`
* Use `Civi::resources()->getUrl()` and set the third option (`$addCacheCode=TRUE`).
* Lookup the cache-code (`Civi::settings()->get('resCacheCode')`) and manually append it to a URL.
* Tell your browser to force-reload (usu `Ctrl-Shift-R` or `Cmd-Shift-R`).

(*I don't know if the above is actually your problem - but it does fit the symptoms: you're working with static JS files and clearing server-side caches and not seeing the expected content. Also, the behavior of HTTP caches can vary between different web-servers - e.g. your local dev server and production web server might have different caching policies.*)

(*Also note that the random suffix may look a bit different depending on the environment and code-flow. It might look like `?xxxxxx` or `?r=xxxxxx`, but it's the same concept either way.*)
> 1 votes

# Answer
Following-up on Coleman's comment about `composer civicrm:publish`.... I don't know if that was confirmed to be part of the issue here. But here's a little braindump about when that should or shouldn't be necessary.

**Assumptions**: You have a typical Civi-D9/D10 layout (as per `civicrm/civicrm-asset-plugin`). You are deploying custom/contrib extensions.

**Considerations**: The location and mechanism of the download can vary, depending on your local-configuration/preferences/etc.

* **Location**: Where is the extension code stored? Typically, it's either the public folder (`sites/default/files/civicrm/ext/`) or the private folder (`vendor/`).
* **Mechanism**: Which mechanism performs the download? Typically it's either the built-in downloader (`CRM_Extension_Downloader`) or a manual downloader (`git clone` or `wget && unzip`) or a `composer`-based downloader

**Expectations**: There are two typical approaches.

1. For extensions in the public folder `sites/default/files/civicrm/ext/`...
    * It makes sense to me to use the built-in downloader and/or manual downloader.
    * The assets (JS/CSS/PNG/etc) are already public. These downloaders do not integrate with `civicrm-asset-plugin`. (It would be complex+unnecessary.)
    * You shouldn't have to call `composer civicrm:publish`... because it's fundamentally not needed.
2. For extensions in the private folder (`vendor/XXX/YYY/`)...
    * It makes sense to me to use `composer` as the downloader.
    * The assets (JS/CSS/PNG/etc) are private and need to be copied to a public location. This is why `civicrm-asset-plugin` integrates into `composer` \- so that it can automatically publish these assets.
    * You shouldn't have to call `composer civicrm:publish` in typical usage... because `civicrm-asset-plugin` hooks into other `composer` commands. It should run automatically (during `composer install` or `composer require` or `composer update`).
3. For other arrangements... that's getting into oddball territory. I might see cases where you need to manually call `composer civicrm:publish`. But we really need to clarify the scenario. Here are some examples of oddball scenarios:
    * Manually editing files in `vendor/`
    * Configuring `extensionsDir` to point at a private folder
    * Using `composer` to download extensions into a public folder

(There may be mitigations to make the oddball scenarios better. For example, if you frequently do direct edits in the `vendor/` tree, then you should configure `CIVICRM_COMPOSER_ASSET=symdir` or `file-mode: symdir`.)
> 1 votes

# Answer
The solution is to run the command `composer civicrm:publish`. See note in the upgrade guide (which really ought to be more prominent)!
> 0 votes

---
Tags: javascript, cache
---


# Question
Title: Add a Financial Type to Existing Custom Field Profile
Years ago, when we started using CiviCRM, I added a custom field to the New Contribution dialog on the backend of Civi (we're using it on WordPress, if that makes any difference). I'm not asking about public contribution pages.

So the custom field is in a custom data set, and appears on the New Contribution page perfectly. The custom field appears when a financial type of Donation, Member Dues, Campaign Contribution, and In-Kind is selected.

Now I've added a new financial type, and want the custom field to appear with the new financial type. I'll never get back the hour I just spent tearing apart the administration pages, looking for where I can do that, frustrated that I didn't find anywhere to edit the types.

And in Googling around, I kept seeing advice to be very careful to select financial types carefully, so that I think I finally understand that the financial types associated with a custom field are not updateable.

Is that really the case? And if so, really? I can understand needing to be careful, but stuff changes in seven years.

If that's not the case, how do I do add the new financial type to the list where the custom field appears?

Thanks! Don

# Answer
Navigate to CiviCRM \>\> Administer \>\> Customize data and screens \>\> Custom Fields.

Look for the custom set you want to set the new financial type.

Click on More \>\> Settings
> 4 votes

---
Tags: custom-fields, contributions
---


# Question
Title: One-time CiviCRM On-line Membership registration with recurring payment/contribution
We are looking to end manual reminders, as it takes an enormous effort. Thus, a rolling membership with annual payments (Stipe) via a credit card seem like the obvious solution.

Now. however, it seems as if it is impossible to link an on-line registration of a new Member with recurring payments via Stripe (interface tested and works) to an automatic update of the Membership period as a consequence of the new contribution.

I tried to use CiviRules, but to no avail!

There must be a way to solve this, has anybody out there an idea? We run: WP/CiviCrm 5.50

Claes

# Answer
Yes, it is possible, you need to set the membership type to auto-renew required
> 2 votes

---
Tags: civicontribute, civimember
---


# Question
Title: How do i create a custom page size using backdrop
I am using backdrop with civicrm 5.65.0 and need to create a custom page size so that i can then create a mailing label for a 6"x4" label printer.

Please help. I cant find anything that tells me how to do this

# Answer
If you go to Administer - System Settings - Options Groups - Paper Size, you can add a new paper size based on the format for existing options.

Then you can go to Administer - Communications - Label Page Formats and create a label page format.
> 1 votes

---
Tags: custom
---


# Question
Title: What's the best way to deal with a tangle of membership types, currencies and taking donations on membership contribution pages?
I am managing the CiviCRM setup for a membership organiziation that is about to enter a campaign drive.

In the past, it has not been possible to select currency as one of the options in a contribution page or price set and so I set up 6 different contribution pages, like this:

* Institutional membership - USD
* Institutional membership - EUR
* Institutional membership - GBP
* Individual membership - USD
* Individual membership - EUR
* Individual membership - GBP

And to make that possible with only two member types and the different values for each currency, I use price sets. It is a lot of juggling (especially with language translations layered on top), but has basically worked for several years.

Now they would like to solicit donations at the same time. The "Contribution amounts" section cannot be enabled when using a membership price set. In the past, I could add additional fields to the price set with fixed donation amounts, though write-ins were not very realistic. However, since the recent interface change to the prices sets screen, any new field except text/numeric requires setting a membership type, so I can't seem to set additional donations as part of the prices set.

All of this has become so tangled that I thought it might be time to ask the question, "what is the current best way to deal with accepting different currencies while also soliciting donations on a membership contribution page?" Does anyone have an example solution to either or both of these problems?

I wonder if Form-builder might be at a state to be useful here?

We're running CiviCRM 5.66.1 on Wordpress 6.3.

# Answer
> 1 votes
In relation to

> since the recent interface change to the prices sets screen, any new field except text/numeric requires setting a membership type, so I can't seem to set additional donations as part of the prices set

Maybe i am misconstruing the issue but I had no problems just now on https://dmaster.demo.civicrm.org/civicrm/admin/price/field/edit?action=preview&sid=9&reset=1&context=field (will disappear in a few hours), setting up a Memb based price set with an additional Contribution 'select' field. I simply opted not to choose a Memb Type for those options and it saved fine.

and

Is there something I am not factoring in that is causing you problems?

---
Tags: civicontribute, civimember, currency
---


# Question
Title: Webform submission token not displaying in confirmation
I have converted a simple create contact form from Drupal 7 to Drupal 9.

In the Drupal 7 form, the confirmation would display a button with a link to the newly created contact like so:

```
<p><strong><span style="font-family:Trebuchet MS,Helvetica,sans-serif"><a href="/civicrm/contact/view?reset=1&cid=[submission:contact-id:2]" style="background:#792258; text-decoration: none; padding: 10px 25px; color: #ffffff; border-radius: 4px; display:inline-block; ;text-underline-color:#ff3884">VIEW YOUR CONTACT</a></span></strong></p>

```

So for Drupal 7, I am using the `[submission:contact-id:2]` token to insert the contact ID and all is fine.

I cannot get this to work in Drupal 9? It just prints \[webform\_submission:contact-id:2\]. Other tokens do seem to work (see below). It is not the old gotcha because it is in a fieldset, it's all one simple hierarchy of six fields.

```
[webform_submission:values:contact-id:2]

```

Will just print as typed above and not show the newly created ID in the confirmation message. I have found a work around - add the contact ID field for the new contact to the form (it's hidden so OK), so using:

```
[webform_submission:values:civicrm_2_contact_1_contact_contact_id]

```

Works and outputs the correct newly created ID

This also works:

```
[webform_submission:contact-link:2]

```

outputs a full link to the new contact.

I am wondering if this is a bug to report or I'm missing some other integration or setting?

# Answer
> 1 votes
OK - this has driven me crazy but it was entirely a PICNIC one (Problem in Chair, Not in Computer...)

This was the issue and it must have been an accidental click somehere along the line:

I do not know how it got checked on and it must have been me (!), but it was a real gotcha... Unchecked and all tokens works...

---
Tags: webform-civicrm, tokens
---


title: Mosaico missing templates

text:
# Question
Title: Mosaico missing templates
With this fresh install, no templates are installed; the civicrm\_mosaico\_template table has no rows, although www-t1/web/sites/default/files/civicrm/ext/uk.co.vedaconsulting.mosaico/packages/mosaico/templates does contain these subdirectories.

tedc15/ tutorial/ versafix-1/

```
This is with a new composer install.
Drupal version   : 9.5.11
Site URI         : http://t1.boo.org
DB driver        : mysql
DB hostname      : localhost
DB port          : 3306
DB username      : boo_ut1
DB name          : boo_dt1
Database         : Connected
Drupal bootstrap : Successful
Default theme    : aristotle
Admin theme      : aristotle
PHP binary       : /opt/cpanel/ea-php81/root/usr/bin/php
PHP config       : /opt/cpanel/ea-php81/root/etc/php.ini
PHP OS           : Linux
PHP version      : 8.1.24
Drush script     : /home/boo/www-t1/vendor/drush/drush/drush
Drush version    : 11.6.0
Drush temp       : /tmp
Drush configs    : /home/boo/.drush/drush.yml
                   /home/boo/www-t1/vendor/drush/drush/drush.yml
Install profile  : opigno_lms
Drupal root      : /home/boo/www-t1/web
Site path        : sites/default
Files, Public    : sites/default/files
Files, Private   : /home/boo/www-t1/web/../private
Files, Temp      : /tmp

CiviCRM 5.66.0 (All extensions are up-to-date)
AuthX: Version 5.66.0
CiviContribute: Version 5.66.0
CiviEvent: Version 5.66.0
CiviGrant: Version 5.66.0
CiviMail: Version 5.66.0
CiviMember: Version 5.66.0
CiviReport: Version 5.66.0
CKEditor4: Version 5.66.0
Custom search framework: Version 5.66.0
Event Cart: Version 5.66.0
Financial ACLs: Version 5.66.0
FlexMailer: Version 5.66.0
Form Core: Version 5.66.0
Mosaico: Version 3.2.1691060437
reCAPTCHA: Version 5.66.0
SearchKit: Version 5.66.0
Sequential credit notes: Version 5.66.0
Theme: Greenwich: Version 5.66.0

```

With url path https://t1.boo.org/civicrm/mosaico-template-list, there are no templates displayed. Adding a template (which will autofill with Newletter if you type an 'n') the UI shows an error. "Sorry and error occurred and your information was not saved."

More dramatically this url path https://t1.boo.org/civicrm/admin/setting/mosaico?reset=1 produces 2800 line stack trace (including just a bit here:

```
Warning: Undefined array key "template" in include() (line 5 of /home/boo/www-t1/private/civicrm/templates_c/en_US/%%0B/0B9/0B956D8A%%Field.tpl.php).
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%0B/0B9/0B956D8A%%Field.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 15)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%F9/F94/F94D3738%%basicFormFields.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 8)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%A5/A51/A512AFEC%%basicForm.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 19)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%0C/0CB/0CBEC124%%default.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 61)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%F7/F77/F77C7890%%CMSPrint.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 6)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%2B/2BD/2BD99720%%drupal8.tpl.php') (Line: 1273)
Smarty->fetch('CRM/common/drupal8.tpl', NULL, NULL, ) (Line: 205)
CRM_Core_Smarty->fetch('CRM/common/drupal8.tpl') (Line: 117)
CRM_Core_QuickForm_Action_Display->renderForm(Object) (Line: 83)
CRM_Core_QuickForm_Action_Display->perform(Object, 'display') (Line: 203)
HTML_QuickForm_Controller->handle(Object, 'display') (Line: 103)
HTML_QuickForm_Page->handle('display') (Line: 355)
CRM_Core_Controller->run() (Line: 98)
CRM_Utils_Wrapper->run('CRM_Admin_Form_Generic', 'Mosaico Settings', Array) (Line: 295)
CRM_Core_Invoke::runItem(Array) (Line: 69)
CRM_Core_Invoke::_invoke(Array) (Line: 36)
CRM_Core_Invoke::invoke(Array) (Line: 88)
Drupal\civicrm\Civicrm->invoke(Array) (Line: 83)
Drupal\civicrm\Controller\CivicrmController->main(Array, '')
call_user_func_array(Array, Array) (Line: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 124)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 169)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Warning: Undefined array key "help" in include() (line 14 of /home/boo/www-t1/private/civicrm/templates_c/en_US/%%0B/0B9/0B956D8A%%Field.tpl.php).
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%0B/0B9/0B956D8A%%Field.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 15)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%F9/F94/F94D3738%%basicFormFields.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 8)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%A5/A51/A512AFEC%%basicForm.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 19)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%0C/0CB/0CBEC124%%default.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 61)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%F7/F77/F77C7890%%CMSPrint.tpl.php') (Line: 1914)
Smarty->_smarty_include(Array) (Line: 6)
include('/home/boo/www-t1/private/civicrm/templates_c/en_US/%%2B/2BD/2BD99720%%drupal8.tpl.php') (Line: 1273)
Smarty->fetch('CRM/common/drupal8.tpl', NULL, NULL, ) (Line: 205)
CRM_Core_Smarty->fetch('CRM/common/drupal8.tpl') (Line: 117)
CRM_Core_QuickForm_Action_Display->renderForm(Object) (Line: 83)
CRM_Core_QuickForm_Action_Display->perform(Object, 'display') (Line: 203)
HTML_QuickForm_Controller->handle(Object, 'display') (Line: 103)
HTML_QuickForm_Page->handle('display') (Line: 355)
CRM_Core_Controller->run() (Line: 98)
CRM_Utils_Wrapper->run('CRM_Admin_Form_Generic', 'Mosaico Settings', Array) (Line: 295)
CRM_Core_Invoke::runItem(Array) (Line: 69)
CRM_Core_Invoke::_invoke(Array) (Line: 36)
CRM_Core_Invoke::invoke(Array) (Line: 88)
Drupal\civicrm\Civicrm->invoke(Array) (Line: 83)
Drupal\civicrm\Controller\CivicrmController->main(Array, '')
call_user_func_array(Array, Array) (Line: 123)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 580)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 124)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97)
Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 169)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 718)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

```

# Answer
> 2 votes
In my case the problem has to do with PHP versions, updating the PHP version, and backing out has always provoked and fixed the problem. Finally one must just move forward with a supported PHP version, in which case changing the outbound mail setting from php 'mail()' to SMTP resolved the issue.

# Answer
> 0 votes
Try upgrading to Mosaico 3.3, clear CiviCRM cache, and see if the error persists? I suspect the DAO rebuild may have solved this issue.

---
Tags: drupal, mosaico, templates, missing
---


title: Mosaico template auto sending

text:
# Question
Title: Mosaico template auto sending
I am trying to send out a Mosaico template on Civicrm. I have scheduled it on a certain day. However, I realise that the execution does not work. It is forever on the "Scheduled" state. I believe this has got to do something with the cron. Can anyone asssist me withi this please?

# Answer
> 1 votes
Have you seen the documentation for setting up scheduled jobs? It looks complicated because there are several ways to set this up depending on your hosting environment. You will also find multiple similar questions on here.

# Answer
> 1 votes
Possibly related to the fix raised in this PR - https://github.com/civicrm/civicrm-core/pull/28105

Can you please try applying it any verify if it fixes your error? If yes, please comment on the PR.

---
Tags: cron, mosaico, cron-job
---


# Question
Title: Why does migrated extension still show as not installed?
I followed the instructions for migrating my CiviCRM installation to another server as closely as I could. I can't figure out why one extension still shows as not installed?

If I click install again, I get errors about files already existing.

I have verified:

1. The extension's directory exists:
2. The manifest file (info.xml) seems correct:
3. The PHP files match those from the 'source' installation.

Does anyone have any trouble-shooting suggestions?

# Answer
> 3 votes
My problem turned out to be incorrect entries on Resource URLS.

# Answer
> 1 votes
In the list of extensions if you click the triangle on left to expand, it will say the full path where it thinks the extension is. Does that match up?

Another thing you can try is manually inserting a row the civicrm\_extension table for it.

FYI the compatibility tag is the wrong format but that wouldn't make it appear uninstalled. (Should be

```
<compatibility>
  <ver>4.2</ver>
  <ver>4.7</ver>
  <ver>5</ver>
</compatibility>

```

---
Tags: civievent, extension
---


# Question
Title: Database Upgrade from 5.65.0 to 5.67.0 throws WSOD and kills MySQL
On my local lando dev environment, I proceeded to `composer update` to get onto the latest stable/recommended Drupal 10.1.6 and Civi 5.67.0.

Post-upgrade state:

* CiviCRM UI seems to work fine
* CiviCRM System Status: shows red error "Database Upgrade Required"

**The Civi database upgrade step seems to be broken.**

1. Following the current upgrade documentation for Drupal 10... after doing `composer update`, I tried `cv upgrade:db` in a terminal, but it gave no output.
2. I then proceeded to try the UI database upgrade, `http://example.org/civicrm/upgrade?reset=1`, but this time the site crashed, showing WSOD with this error:

```
The website encountered an unexpected error. Please try again later.<br />
Warning: Undefined array key 0 in /app/web/core/lib/Drupal/Core/Utility/Error.php on line 142

Warning: Undefined array key "file" in /app/web/core/includes/errors.inc on line 77

Warning: Undefined array key "line" in /app/web/core/includes/errors.inc on line 78

```

I'm not sure there's much to gather from that backtrace.

What I found interesting is that it **instantly killed MySQL**!

It didn't run for a long time or timeout. Boom, it was dead.

I'm running MySQL 8.0.

So I restarted MySQL service, turned ON the MySQL `general_log` to try to capture what's going on there, attempted the Civi Database Upgrade again via the URL (`http://example.org/civicrm/upgrade?reset=1`)... and it crashed again.

The last item recorded in the MySQL general\_log is this query:

```
SELECT
  default_template.id,
  default_template.workflow_id,
  default_template.workflow_name
FROM
  civicrm_msg_template reserved
  LEFT JOIN civicrm_msg_template default_template ON reserved.workflow_id = default_template.workflow_id
WHERE
  reserved.is_reserved = 1
  AND default_template.is_default = 1
  AND reserved.id <> default_template.id
  AND reserved.msg_html = default_template.msg_html

```

When I run this query in PhpMyAdmin, it instantly kills MySQL.

I'm deep in the weeds trying to diagnose if it's my local setup or a more general issue.

Any ideas?

Is there anything else I can try to get the CiviCRM Database Upgrade to go through properly?

---

UPDATE:

That query seems to cause some sort of memory issue in mysql.

Here's what the mysql log says about the crash:

```
database_1  | 22:35:22 UTC - mysqld got signal 11 ;
database_1  | Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
database_1  | Thread pointer: 0x7ffa840141b0
database_1  | Attempting backtrace. You can use the following information to find out
database_1  | where mysqld died. If you see no messages after this, something went
database_1  | terribly wrong...
database_1  | stack_bottom = 7ffb18143d60 thread_stack 0x46000
database_1  | /opt/bitnami/mysql/bin/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x2e) [0x55a8fec2f24e]
database_1  | /opt/bitnami/mysql/bin/mysqld(handle_fatal_signal+0x323) [0x55a8fddad953]
database_1  | /lib/x86_64-linux-gnu/libpthread.so.0(+0x12730) [0x7ffb34bfe730]
database_1  | /opt/bitnami/mysql/bin/mysqld(+0x2575a88) [0x55a8ff2a5a88]
database_1  | /opt/bitnami/mysql/bin/mysqld(+0x11e42b2) [0x55a8fdf142b2]
database_1  | /opt/bitnami/mysql/bin/mysqld(hash_join_buffer::HashJoinRowBuffer::StoreRow(THD*)+0x62) [0x55a8fdebff52]
database_1  | /opt/bitnami/mysql/bin/mysqld(HashJoinIterator::BuildHashTable()+0x80) [0x55a8fdec2080]
database_1  | /opt/bitnami/mysql/bin/mysqld(HashJoinIterator::Init()+0xe0) [0x55a8fdec24e0]
database_1  | /opt/bitnami/mysql/bin/mysqld(SELECT_LEX_UNIT::ExecuteIteratorQuery(THD*)+0x251) [0x55a8fdd3af11]
database_1  | /opt/bitnami/mysql/bin/mysqld(SELECT_LEX_UNIT::execute(THD*)+0xf9) [0x55a8fdd3d0c9]
database_1  | /opt/bitnami/mysql/bin/mysqld(Sql_cmd_dml::execute_inner(THD*)+0x20b) [0x55a8fdccccdb]
database_1  | /opt/bitnami/mysql/bin/mysqld(Sql_cmd_dml::execute(THD*)+0x3e8) [0x55a8fdcd6118]
database_1  | /opt/bitnami/mysql/bin/mysqld(mysql_execute_command(THD*, bool)+0x19ad) [0x55a8fdc8884d]
database_1  | /opt/bitnami/mysql/bin/mysqld(mysql_parse(THD*, Parser_state*)+0x31c) [0x55a8fdc8c43c]
database_1  | /opt/bitnami/mysql/bin/mysqld(dispatch_command(THD*, COM_DATA const*, enum_server_command)+0x156b) [0x55a8fdc8dedb]
database_1  | /opt/bitnami/mysql/bin/mysqld(do_command(THD*)+0x174) [0x55a8fdc8f474]
database_1  | /opt/bitnami/mysql/bin/mysqld(+0x106fa48) [0x55a8fdd9fa48]
database_1  | /opt/bitnami/mysql/bin/mysqld(+0x23dfadc) [0x55a8ff10fadc]
database_1  | /lib/x86_64-linux-gnu/libpthread.so.0(+0x7fa3) [0x7ffb34bf3fa3]
database_1  | /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7ffb343e44cf]
database_1  |
database_1  | Trying to get some variables.
database_1  | Some pointers may be invalid and cause the dump to abort.
database_1  | Query (7ffa850531b8): SELECT default_template.id, default_template.workflow_id, default_template.workflow_name FROM civicrm_msg_template reserved         LEFT JOIN civicrm_msg_template default_template           ON reserved.workflow_id = default_template.workflow_id         WHERE reserved.is_reserved = 1 AND default_template.is_default = 1 AND reserved.id <> default_template.id         AND reserved.msg_html = default_template.msg_html
database_1  | Connection ID (thread ID): 23
database_1  | Status: NOT_KILLED
database_1  |
database_1  | The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
database_1  | information that should help you find out what is causing the crash.

```

# Answer
> 3 votes
Ok, I got the database upgrade to work by **turning OFF hash joins**.

In my version of mysql 8.0.19, I did this by setting `block_nested_loop=off` in the `optimizer_switch` variable. Easy to do in phpmyadmin \> server \> variables.

Then I went back to the Civi UI to run the db upgrade link that kept breaking: http://mylocal.lndo.site/civicrm/upgrade?reset=1

...and this time it gave me the upgrade screen!

...and the process finished perfectly!

***Reference 1***

> Block Nested-Loop Flags
>
> `block_nested_loop` (default on)
>
> Controls use of BNL join algorithm. In MySQL 8.0.18 and later, this also controls use of hash joins, as do the BNL and NO\_BNL optimizer hints. In MySQL 8.0.20 and later, block nested loop support is removed from the MySQL server, and this flag controls the use of hash joins only, as do the referenced optimizer hints.

Source: https://dev.mysql.com/doc/refman/8.0/en/switchable-optimizations.html#optflag\_block-nested-loop

**Reference 2**

> By default, MySQL 8.0.18 and later employs hash joins whenever possible. It is possible to control whether hash joins are employed using one of the BNL and NO\_BNL optimizer hints.
>
> (MySQL 8.0.18 supported hash\_join=on or hash\_join=off as part of the setting for the optimizer\_switch server system variable as well as the optimizer hints HASH\_JOIN or NO\_HASH\_JOIN. In MySQL 8.0.19 and later, these no longer have any effect.)

Source: https://dev.mysql.com/doc/refman/8.0/en/hash-joins.html

---
Tags: upgrade, mysql, wsod
---


title: Adding fields to Contacts Pop Up

text:
# Question
Title: Adding fields to Contacts Pop Up
I have tried searching for this but not sure what it's called?

Is it possible to alter the fields that display in the pop-up you get if you hover over a contact? We want to add some of the custom fields here if possible?

# Answer
> 1 votes
Under Administer - Customize - Profiles, it's the one called Summary Overlay.

---
Tags: contacts
---


# Question
Title: Avery 5160 label definition does not print properly
WHen printing Avery 5160 labels, the printing does not fit the labels properly.

That is, the top line of the top row of labels is at the right place, but for each row after that, the top row is down a little bit; the printing on the bottom row of labels goes down off the page.

Same with the left margins - the 1st column is at the proper left margin, but the 2nd and 3rd columns move too close to the left edge of the label.

We've fiddled with the settings, but nothing seems to work.

The user has printed 5160 labels on the same printer, from Word, very successfully.

Any ideas? Thanks!

# Answer
> 1 votes
I've not tried those particular labels, but I had a similar problem with Avery J8160 labels. I started off with a MS Word template downloaded from Avery to get all the spacing values, but had to make some adjustments to the label format, which I did by trial and error to get it printing correctly. I calculated the horizontal spacing as 0.25 cm but had to use 0.45 cm and for vertical spacing@ Calculated 0 cm but had ti use 0.15 cm. Will be different values for your labels buy that gives you the idea. I don't know what wasn't right, but this solved the problem for me.

# Answer
> 1 votes
When you print the labels, are you sure that you are printing them at 100% scale (or "Actual size"), and not to "Fit"?

I tested CiviCRM by using the following steps:

* I downloaded the Avery template Avery5160EasyPeelAddressLabels.doc, opened it in Word and saved it as PDF to get the "official" label outlines in a PDF file.
* I created some mailing labels in CiviCRM, set to Avery 5160.
* I superimposed the Avery label outlines PDF onto the CiviCRM mailing labels PDF using https://tools.pdf24.org "PDF Overlay"

Result - all addresses are well within the Avery template-derived label outlines. The below image is a screenshot of my resulting PDF:

Some of the dimensions in the CiviCRM label configuration (Administer \> Communication \> Label formats) are slightly different to the dimensions that can be derived from the Word template text boxes' sizes and positions but not enough to cause a problem.

So I think you have a scaling problem when you print. Check the scaling setting when you print, and try a different PDF reader if necessary.

# Answer
> 1 votes
I found that 5160 appears in both "Label Vendors" of "Avery US", and "Label Vendors" of "Avery A4/A5". If your printer is a US printer, you must us the Avery US vendor. If you use the Avery A4/A5, your merge will indicate that it's gone to the queue and printed, but you won't be able to find it, and it won't print or be in the queue.

---
Tags: address-labels
---


title: Send a test system workflow message

text:
# Question
Title: Send a test system workflow message
We have done some updates to these and wonder if it is possible to send a preview of them so we can see how they look? I can't see any options to send a test message? Is it possible?

# Answer
If you enable the "Message Admin" built-in extension there is a semi-hidden icon on the message template edit form that gives you a preview but note that it doesn't use your configured settings it uses some sample config.

Depending which message it is you can do an online signup in test mode, e.g. under Manage Contribution Pages each one has a link for test mode. The emails will still go out but you'll be able to complete the form using the processor's test cards without making a real contribution.

There is also the Better Message Templates extension which has a preview option but you need to manually create sample data.
> 0 votes

---
Tags: system-workflow-messages
---


title: Basepage not showing

text:
# Question
Title: Basepage not showing
I recently installed civicrm on a wordpress install. I followed the installed and went through the installation. I thought I would see a log in page for civicrm on the /civicrm link. I am seeing a page that outlines that it is coming from civicrm, but no content. How do I see a way for users to log in and use the database?

# Answer
> 1 votes
User management is handled thru the CMS so the login will be at example.org/login if you've not altered the login URL. Users will need at minimum the `access CiviCRM backend and API` permission to see CiviCRM on the Wordpress admin menu on the left.

The base page by default is "/civicrm" but this is for natively displaying contribution/event pages and other dynamic content from CiviCRM.

---
Tags: database
---


title: Upgrade Civi to 5.67 failed

text:
# Question
Title: Upgrade Civi to 5.67 failed
When trying to upgrade CiviCRM from 5.58.1 to 5.67.0 fails with

```
1265
  ALTER TABLE `civicrm_note` CHANGE `privacy` `privacy` varchar(255) NOT NULL DEFAULT 0 COMMENT 'Foreign Key to Note Privacy Level (which is an option value pair and hence an implicit FK)' [nativecode=1265 ** Data truncated for column
  'privacy' at row 2018]

```

# Answer
Try updating the database with below query

```
UPDATE civicrm_note
SET privacy = 0
WHERE privacy IS NULL;

```
> 3 votes

---
Tags: upgrade
---


# Question
Title: Common Issue with Quick Search Functionality After Upgrading Multiple CRMs
I have recently upgraded multiple CRM instances to version 5.67.0 their respective latest versions, and I'm encountering a common issue with the Quick Search functionality in all of them. Before the upgrades, I could search for contacts by their phone numbers, and the search results would display the relevant contact's phone number and email address alongside their name. However, after the upgrades, when I perform a Quick Search using a phone number, the search results do not seem to be related to the input phone number at all. In fact, the results only display the contact's name, and these names are often incorrect.

Only the Phone option is active as a search option in quick search options. All other E-Mail, ID, External ID, etc. options are disabled.

This issue is affecting our ability to efficiently locate contacts in all of our CRM databases. I haven't made any changes to the CRM settings, so I believe this problem may be related to the recent upgrades to the respective CRM versions.

Could you please assist in resolving this common issue and provide guidance on how to restore the previous functionality of the Quick Search feature for phone numbers in multiple CRMs? Your support is greatly appreciated.

# Answer
> 2 votes
Firstly, thank you for engaging with this troublesome issue. The fact that it occurred for some users and not others was truly meaningful. Today, I requested the users experiencing the issue to log in using an Incognito Tab. I observed that there were no issues. Therefore, clearing the Browser History resolved the problem. Thanks again.

# Answer
> 0 votes
I have the same errors and I am running civicrm 5.67.0 with drupal 9.5.11. I did not realize we were supposed to delete the source files first before upgrading - all these years and I have not been doing that. I am expecting you mean to delete the civicrm module and then use composer to require the new module ? What about the Vendor directory - are we supposed to delete anything there too?

BTW- I tried incognito in the FireFox browser with the same result - If I ask for a phone number, I get all 1,042 individuals listed vs. a single individual.

---
Tags: joomla, search, phone, quicksearch
---


title: Renew multiple memberships

text:
# Question
Title: Renew multiple memberships
I have \>400 memberships to renew.

Pressing the Renew hyperlink in **individual** Membership does two things (1) updates the Membership Expiry if and when payment received (2) creates a record with a pending invoice in CiviContribute

These invoices get sent automatically to Xero using CiviXero, and when paid in Xero, CiviContribute status gets updated and CiviMember status changes from Pending to Current - very nice !

I want to Renew multiple memberships without having to do the above 400 times.

I can generate a Membership report for the type of membership in question and select the memberships to act on.

In the Action List, I select "Update Multiple Memberships"

I choose the Profile that selects the relevant fields I have identified.

I can update the expiry date for all memberships in a few moments, but this does not trigger the invoice/CiviContribute process.

I have read about an Action "Renew Multiple Memberships" but cannot find this option.

Is it possible to renew multiple memberships including triggering Civi Contribute automatically?

Any help is appreciated.

Joomla V4. Latest CiviCRM

# Answer
You could do CiviCRM \>\> Membership \>\> Batch entry.

Only thing you need to do is manually select all the contacts.
> 2 votes

---
Tags: civicontribute, civimember, civixero
---


# Question
Title: How do I send a scheduled reminder email to members immediately?
How do I send a scheduled reminder email to members immediately?

I've selected the membership types to email, selected the date to trigger but I cant set the time to trigger NOW (I can only base the time on criteria which isn't suitable).

Any ideas?

Thanks

# Answer
> 4 votes
You can use 0 minutes after since or start date.

Alternatively, you can use CiviRules and EmailApi extension to send email after a membership is created.

---
Tags: scheduled-reminders
---


# Question
Title: How can I add custom date range in CiviCRM date picker?
The standard *Choose Date Range* date picker allows to select from multiple presets, including Last 7 days, Last 30 days, Last 60 days.

Is there a way to configure my own preset (in this case **last 35 days**)?

Which file should I edit or is there an article on this?

# Answer
> 5 votes
You can add your own relative filters using existing ones

Navigate to CiviCRM \>\> Administer \>\> System Settings \>\> Option Groups.

Look for Relative Date Filters \>\> Edit Options

Click on Add option, Give a name and set value as ending\_35.day

---
Tags: search, custom-search, date-range, datepicker
---


title: CiviCRM upgrade issue 5.67.0

text:
# Question
Title: CiviCRM upgrade issue 5.67.0
DB error when upgrading Civi from 5.60.0 to 5.67.0

```
Type    DB_Error
Code    -3
Message DB Error: constraint violation
Mode    16
UserInfo    ALTER TABLE `civicrm_activity` ADD CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE SET NULL [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`d9_civicrm`.`#sql-48a_21833f`, CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE SET NULL)]
DebugInfo   ALTER TABLE `civicrm_activity` ADD CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE SET NULL [nativecode=1452 ** Cannot add or update a child row: a foreign key constraint fails (`d9_civicrm`.`#sql-48a_21833f`, CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE SET NULL)]

```

# Answer
Looks like civicrm\_activity.parent\_id is pointing to orphan records. You will need to fix the orphan records and then run the upgrade. You can use MySQL commands to fix the records.
> 3 votes

---
Tags: upgrade
---


title: Contact Relationship not showing

text:
# Question
Title: Contact Relationship not showing
I imported the data in the CIVI contact table address table, phone table and added relationship in the civi relationship table. the table looks correct with the data and it also showing the contacts on civi crm (Joomla) with all fields. however the relationship tab in the contact showing empty. in contacts reports the relationship showing fine but not in the edit contacts \> relationship tab. I tried to delete the cache from template\_c folder and empty the civi relationship cache table but no sucess.

Similar issue with contact type tag is not showing correct in contact view however when edit the cotact its edited under correct type.

any suggestion would be helpful

# Answer
> 2 votes
got the issue and fixed. on custom import civi not detecting the value empty. some fields are empty need to set them null and its fixed.

---
Tags: joomla, relationships, contact-types
---


# Question
Title: Quick Search stops working after latest update
I've recently upgraded a couple of sites and the Quick Search has stopped working on both of them. I try typing a name and it just spins. I've tried changing the options in Search Preferences but it doesn't make a difference. I get the same results for the other options, such as Contact ID.

Site A... Drupal 9.5.11, CiviCRM 5.67.0

Site B... Drupal 10.1.16, CiviCRM 5.66.2

In the console, I'm getting messages like:

```
Uncaught TypeError: result.values is undefined
    source https://mysite.org.uk/web/libraries/civicrm/core/js/crm.menubar.js?r=OzNRAen_GB:297
    jQuery 6
    api3 https://mysite.org.uk/web/libraries/civicrm/core/js/crm.ajax.js?r=OzNRAen_GB:120
    source https://mysite.org.uk/web/libraries/civicrm/core/js/crm.menubar.js?r=OzNRAen_GB:295

```

Any suggestions that I can try?

# Answer
> 1 votes
Just to confirm, I have run civicrm:publish, and then cleared the cached data in the browser and it's now working for both sites.

I had tried an alternative browser before, in case it was cached info causing the issue, and on the second site I fixed just now I checked whether I definitely needed to clear the cache after running that command and the answer was yes.

---
Tags: quicksearch
---


# Question
Title: Custom event page not keep event ID when click on Review button
I have a page called event and set the bellow rewrite rule to store the event ID in the URL:

```
add_action('init', function () {
    add_rewrite_rule(
        '^event/(\d+)/?$',
        'index.php?pagename=event&event_id=$matches[1]',
        'top'
    );
});

add_filter('query_vars', function ($vars) {
    $vars[] = 'event_id';
    return $vars;
});

```

e.g. mysite.com/event/37/

Works fine until user clicks on Review button and CiviCRM removes the id from URL:

e.g. mysite.com/event/?civiwp=CiviCRM&q=civicrm%2Fevent%2Fregister&\_qf\_Register\_display=true&qfKey=CRMEventControllerRegistration...

Is there a way to keep the ID or get the event ID using other solution?

# Answer
> 2 votes
I would suggest using CiviCRM buildForm or preProcess hook to alter the event registration pages

# Answer
> 1 votes
My solution for this issue was to use the filter `page_link`, called (indirectly) by `get_permalink` function. This way, the URL used on form `action` attribute is correct.

---
Tags: wordpress, civievent
---


# Question
Title: Install CiviCRM on Drupal 10 without Composer
I would like to install CiviCRM on Drupal 10. But I use a mutual hosting without Composer.

How to do ? It's possible to install without Composer ?

Thanks for your help.

# Answer
You can install it on another system or a local dev environment and then copy the files and database over and follow the instructions at https://docs.civicrm.org/sysadmin/en/latest/misc/switch-servers/. But then at upgrade time you will need to do the files update on that other system and copy them over again (but the database doesn't need copying over, you'd just run those upgrades normally on the live system).

Make sure the php version matches otherwise composer will install different files than are needed for the live system.
> 1 votes

---
Tags: drupal, installation, composer
---


# Question
Title: civicrm_api4: How do I create a Contact with Tags (EntityTag)?
Creating a CiviCRM contact using "Chaining" for a group works, but not with Tags (EntityTag), any idea why?

If I remove the chain using EntityTag the contact is created.

here is the error:

> Error: Cannot use object of type CRM\_Core\_BAO\_EntityTag as array in civicrm\_entity\_civicrm\_post() (line 551 of modules/contrib/civicrm\_entity/civicrm\_entity.module).

```
  $civi_fields = [
    'values' => [
      'contact_type'  => 'Individual',
      'first_name'    => $input['first_name'],
      'last_name'     => $input['last_name'],
      'employer_id' => $employer_id,
      'job_title' => $input['job_title'],
    ],
    'chain' => [ // Create these entities using the Contacts '$id'
      'phone' => ['Phone', 'create', ['values' => ['contact_id' => '$id', 'phone' => $input['phone']]]],
      'email' => ['Email', 'create', ['values' => ['contact_id' => '$id', 'email' => $input['mail']]]],
      'tag' => ['EntityTag', 'create', ['values' => ['entity_table' => 'civicrm_contact', 'entity_id' => '$id', 'tag_id' => '4']]],
    ],
    'checkPermissions' => false, // Or API will throw a permission exception
  ];

  // --- Create CiviCRM Contact ---
  $civi_result = civicrm_api4('Contact', 'create', $civi_fields);

```

I also tried removing the chain to entity\_id and creating that entity separately, but got the same error:-

```
  // --- Create CiviCRM Tags linked to the contact ---
  $civi_fields = [
    'values' => [
      'entity_table'  => 'civicrm_contact', // Specify the contact type.
      'entity_id'     => $civi_result[0]['id'],
      'tag_id'        => '4',
    ],
    'checkPermissions' => false, // Or API will throw a permission exception
  ];

  // Create CiviCRM Tag
  $civi_result = civicrm_api4('EntityTag', 'create', $civi_fields);

```

My Setup:-

Drupal 10.1.6 with Enabled Drupal "civi" modules:-

```
CiviCRM Core (civicrm)
CiviCRM Theme (civicrmtheme)
CiviCRM Entity (civicrm_entity)                             4.0.0-alpha6
CiviGroup Roles Sync (civicrm_group_roles)        1.3.2

```

PHP 8.1.23 CiviCRM + extensions are up to date and status is good:-

Extensions

```
All extensions are up-to-date:
AuthX: Version 5.67.0
CiviEvent: Version 5.67.0
CiviMail: Version 5.67.0
CiviMember: Version 5.67.0
CiviReport: Version 5.67.0
CKEditor4: Version 5.67.0
Contribution cancel actions: Version 5.67.0
Custom search framework: Version 5.67.0
Event Cart: Version 5.67.0
Financial ACLs: Version 5.67.0
FlexMailer: Version 5.67.0
FormBuilder: Version 5.67.0
Form Core: Version 5.67.0
Mosaico: Version 3.3.1697392242
reCAPTCHA: Version 5.67.0
SearchKit: Version 5.67.0
Sequential credit notes: Version 5.67.0
SparkPost integration: Version 1.6
Theme: Greenwich: Version 5.67.0

```

As a temporary fix, I'm using API3:

```
      $civi_result = civicrm_api3('EntityTag', 'create', array(
        'entity_table'  => 'civicrm_contact',
        'entity_id'     => ($civi_result[0]['id']),
        'tag_id'        => [4,7],
      ));

```

Most examples found online show looping over civicrm\_api3 and adding one tag at a time, but this does not work due a different civi error when adding more than one entry. It appears that in the latest version of either API or Drupal module civicrm\_entity you must add multiple entries using an array.

CRM\_Core\_Exception: Unable to add tags in civicrm\_api3() (line 138 of /var/www/html/vendor/civicrm/civicrm-core/api/api.php).

# Answer
> 2 votes
Apply this patch Jeremy -\> this is fixed in the D10 version of CiviCRM Entity, but the D9 version requires this backport by Pradeep:

```
root@46c1218044c0:/var/www/drupal/web/sites/default/modules/civicrm_entity# curl -L https://patch-diff.githubusercontent.com/raw/eileenmcnaughton/civicrm_entity/pull/449.diff --output 449.diff

root@46c1218044c0:/var/www/drupal/web/sites/default/modules/civicrm_entity# cat 449.diff |patch -p1 --dry-run
checking file civicrm_entity.module
root@46c1218044c0:/var/www/drupal/web/sites/default/modules/civicrm_entity# cat 449.diff |patch -p1
patching file civicrm_entity.module

```

---
Tags: tags, apiv4
---


title: Combined contribution and event report

text:
# Question
Title: Combined contribution and event report
I have a contribution report that lists all of our online contributions. I've been asked if I can include an event field in the report (event creator) when the contribution is linked to an event. Is this possible? I've tried SearchKit, but I don't really know what I'm doing. Thanks

Edit to show what I'm seeing in SearchKit:

# Answer
I was able to get what I wanted using the SearchKit as below:
> 2 votes

# Answer
Contributions are linked to event participants. So in SearchKit, your main search is for Contributions, then choose "With (optional)": Participants. From there you can link to event fields by choosing "With (optional)": Events.
> 0 votes

---
Tags: civievent, contributions
---


# Question
Title: Storage engine MEMORY is disabled with digitalocean managed database
I have this error:

Possibly unhandled rejection: {"error\_code":-1,"sql":"CREATE TEMPORARY TABLE `civicrm_tmp_e_exrecipient_dc8f2500b15714f5703ad66bc5a8bb37` (contact\_id int primary key) ENGINE=MEMORY COLLATE utf8mb4\_unicode\_ci","debug\_info":"CREATE TEMPORARY TABLE `civicrm_tmp_e_exrecipient_dc8f2500b15714f5703ad66bc5a8bb37` (contact\_id int primary key) ENGINE=MEMORY COLLATE utf8mb4\_unicode\_ci \[nativecode=3161 \** Storage engine MEMORY is disabled (Table creation is disallowed).\]","entity":"Mailing","action":"create","is\_error":1,"error\_message":"DB Error: unknown error","debug\_information":"CREATE TEMPORARY TABLE `civicrm_tmp_e_exrecipient_dc8f2500b15714f5703ad66bc5a8bb37` (contact\_id int primary key) ENGINE=MEMORY COLLATE utf8mb4\_unicode\_ci"}

on a civicrm installation which uses a managed database at DigitalOcean.

This happens when adding a new group as recipient of a mailing. Instead of showing the recipients' count, civicrm shows an "estimating" locked message.

I'm pretty sure this is not a problem with civicrm, but with the managed database. Sorry to ask this here, but I'm stuck. Any ideas how to fix this? Thanks.

SOLUTION: Demerit's answer helped me to work around the problem, but the solution came from setting internal\_tmp\_mem\_storage\_engine to MEMORY with DigitalOcean API. You need to wait some time for the new setting to have effect.

UPDATE: DigitalOcean disabled the ability to set internal\_tmp\_mem\_storage\_engine by setting disabled\_storage\_engines to "ARCHIVE,BLACKHOLE,CSV,MEMORY,MRG\_MYISAM,MyISAM", so the workaround has become the solution :-(

# Answer
I would edit CRM/Utils/SQL/TempTable.php and change the 3 places where it says `MEMORY` to `InnoDB` instead so it always uses InnoDB.

I would also then enable the scheduled job Clean-up Temporary Data and Files just to make sure those tables get cleaned up.
> 2 votes

---
Tags: mysql, digitalocean
---


# Question
Title: Profile Displaying "No Record of Type found"
I have a profile for updating people's details - set up via a short code in Wordpress in the view only mode the Data set displays fine See below - when I switch to edit mode it comes up with the following with No record of Type Found

If you click on the Add New record it comes up with a box to edit it - Is it possible to get it to appear in an inline format? What Have I missed?

It does relate to the Gift Aid, I have checked in the Custom Data fields "display as Table is checked" as per "No records of type '' found" error - shortcode in WordPress page to edit profile

Its worth noting that the Gift Aid field do not dispaly when searching for fields or on the tokens when creating emails - Am guessing this is setting somewhere?

In View Mode

Civi 5.65.2 On wordpress 6.4.1 Uk Gift Aid Extension 3.5.3

# Answer
The message means that there isn't any record for Gift Aid for the contact.
> 1 votes

---
Tags: profile, gift-aid-extension
---


title: Safe way to upgrade to PHP 8.1

text:
# Question
Title: Safe way to upgrade to PHP 8.1
CiviCRM 5.66 now calls for PHP 8.1. What's a safe way to do this upgrade? Using cPanel I changed to 8.1 while logged in to a test site, and all was well - I'm sure I've done this the same way before with no problems. However on another site - also a test site fortunately - upgrading to PHP 8.1 while logged in has broken it. So, is there a safe method to do a PHP upgrade? Is it flush caches, logout, backup, do the PHP upgrade, then log back in? Obviously, it's not as simple as I thought...

# Answer
> 1 votes
I'm going to jump in and give you my experience. First, no idea what platform you are using. Usually, I start off by saying: WordPress v6.4.1 CiviCRM v5.67.0 which is what I have right now.

MultiPHP is a bad idea even if you control your own Cloud unless you are in a bare blade like AWS, Google Cloud, Azure or whatever. Any host telling you that you have full control is lying. So, stick with PHP Version from your cPanel \> Select PHP Version and set all of your deployments there. Second, most of the issues originate with the Extensions. For example, neither the Volunteer nor Area extensions comply with the revamped Angular Settings (Line 246 in both of those and then builds out crazy from there). Surprising, because Volunteers are the cornerstone of any nonprofit. You will get an "Array and string offset access syntax with curly braces is deprecated" with the 5.67.0 update.

Now, I am not really a coder, but I try to bring issues up. Some other items are that the OAuth, where the world is going on EVERYTHING, is kinda weak in the distro. I had to tweak some things to get it to fire up right. So, if you are running OAuth then that could be an issue and then how both say Google Cloud or whatever is booming that token back and forth.

If you are in WP, remember, go to your config file and change the WP\_DEBUG from false to true. That is going to give you your error, generally. Building on that, make sure you go back in and tick it off, when done. Also, if your cron is set right in WP, it generally will spit out an error and email it to you if set to do such. I have a post somewhere in here on it.

Finally, and not to be rude, if you are having changes made to your .htaccess file you have real issues. That should **NEVER** happen on a WP deployment. Anything, really, changing that should be prevented along with protecting all manner of file folders, etc. I am sure there are plenty of articles on that and I don't know what platforms anyone is using so is what it is.

# Answer
> 1 votes
The angular profiles extension had/has a problem with PHP 8+. If this is enabled then things will not work. Other extensions (I believe CiviVolunteer) may be dependent upon the first extension. My experience is that all the extensions need to be tested. It may be (as in my case) you cannot move to PHP 8 at the moment if you are reliant on a particular extension. There is a blog entry on civicrm.org that records success or otherwise with a list of some extensions, but there are a lot of them.

# Answer
> 0 votes
I ran into another problem upgrading to PHP 8.1, again it gave the site a 500 internal server error and was inaccessible. The cause was the .htaccess file overwritten by MultiPHP, a cPanel untility - which was fixed by restoring the previous .htaccess file. There's more to this problem that I don't understand, frankly, but I think you can put this down to a hosting problem - and little to do with changing from PHP 7.4 to 8.1 - although that did trigger the problem.

---
Tags: php
---


# Question
Title: Code seen instead of Relationships 5.67.0 and 5.67.1
When viewing or editing contacts in 5.67.0 or 5.67.1, I see the following instead of the relationships that have been assigned:

```
{{:: ts('Permissioned Relationships:') }}  {{:: ts('This contact can be viewed by the other.') }}  {{:: ts('This contact can be viewed and edited by the other.') }}

```

Reports does show the proper relationships, so the table information is correct.

How can I restore the capability to add and change relationships?

EDIT: In response to Coleman. Here is the console:

```
administrator/:29 [Deprecation] The keyword 'searchfield-cancel-button' specified to an 'appearance' property is not standardized. It will be removed in the future.
jquery-migrate.min.js?7ff9af6c210154c3364bf0718cadd787:2 JQMIGRATE: Migrate is installed, version 1.4.1
angular.js:15697 Error: [$compile:multidir] http://errors.angularjs.org/1.8.2/$compile/multidir?p0=afFieldset&p1=%20(module%3A%20af)&p2=afFieldset&p3=%20(module%3A%20af)&p4='afFieldset'%20controller&p5=%3Cdiv%20af-fieldset%3D%22%22%20api-entities%3D%22%5B'RelationshipCache'%2C%20'Contact%20AS%20RelationshipCache_Contact_far_contact_id_01'%5D%22%3E
    at angular.js:99:1
    at ba (angular.js:11088:15)
    at aa (angular.js:10338:11)
    at Xa (angular.js:9865:15)
    at angular.js:11012:38
    at angular.js:18075:37
    at m.$digest (angular.js:19242:15)
    at m.$apply (angular.js:19630:13)
    at k (angular.js:13473:36)
    at v (angular.js:13730:7)
(anonymous) @ angular.js:15697
(anonymous) @ angular.js:11956
(anonymous) @ angular.js:11047
(anonymous) @ angular.js:18075
$digest @ angular.js:19242
$apply @ angular.js:19630
k @ angular.js:13473
v @ angular.js:13730
y.onload @ angular.js:13635
load (async)
(anonymous) @ angular.js:13618
s @ angular.js:13418
(anonymous) @ angular.js:13159
(anonymous) @ angular.js:18075
$digest @ angular.js:19242
$apply @ angular.js:19630
(anonymous) @ angular.js:1966
invoke @ angular.js:5208
c @ angular.js:1964
Wc @ angular.js:1984
(anonymous) @ crm-angularjs-loader.js?r=lMhHken_US:7
each @ jquery.min.js:2
each @ jquery.min.js:2
(anonymous) @ crm-angularjs-loader.js?r=lMhHken_US:6
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
trigger @ jquery.min.js:3
(anonymous) @ jquery.min.js:3
each @ jquery.min.js:2
each @ jquery.min.js:2
trigger @ jquery.min.js:3
(anonymous) @ Common.js?r=lMhHken_US:1606
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
J @ jquery.min.js:2
angular.js:15697 Error: [$compile:multidir] http://errors.angularjs.org/1.8.2/$compile/multidir?p0=afFieldset&p1=%20(module%3A%20af)&p2=afFieldset&p3=%20(module%3A%20af)&p4='afFieldset'%20controller&p5=%3Cdiv%20af-fieldset%3D%22%22%20api-entities%3D%22%5B'Note'%2C%20'File%20AS%20Note_EntityFile_File_01'%2C%20'EntityFile%20AS%20Note_EntityFile_File_01'%2C%20'Note%20AS%20Note_Note_entity_id_01'%5D%22%3E
    at angular.js:99:1
    at ba (angular.js:11088:15)
    at aa (angular.js:10338:11)
    at Xa (angular.js:9865:15)
    at angular.js:11012:38
    at angular.js:18075:37
    at m.$digest (angular.js:19242:15)
    at m.$apply (angular.js:19630:13)
    at k (angular.js:13473:36)
    at v (angular.js:13730:7)
(anonymous) @ angular.js:15697
(anonymous) @ angular.js:11956
(anonymous) @ angular.js:11047
(anonymous) @ angular.js:18075
$digest @ angular.js:19242
$apply @ angular.js:19630
k @ angular.js:13473
v @ angular.js:13730
y.onload @ angular.js:13635
load (async)
(anonymous) @ angular.js:13618
s @ angular.js:13418
(anonymous) @ angular.js:13159
(anonymous) @ angular.js:18075
$digest @ angular.js:19242
$apply @ angular.js:19630
(anonymous) @ angular.js:1966
invoke @ angular.js:5208
c @ angular.js:1964
Wc @ angular.js:1984
(anonymous) @ crm-angularjs-loader.js?r=lMhHken_US:7
each @ jquery.min.js:2
each @ jquery.min.js:2
(anonymous) @ crm-angularjs-loader.js?r=lMhHken_US:6
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
trigger @ jquery.min.js:3
(anonymous) @ jquery.min.js:3
each @ jquery.min.js:2
each @ jquery.min.js:2
trigger @ jquery.min.js:3
(anonymous) @ Common.js?r=lMhHken_US:1606
i @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
J @ jquery.min.js:2

```

# Answer
After disabling all extensions that were not included in 5.67.0 or 5.67.1, I uninstalled, forcibly removed all related directories, and reinstalled 5.67.1. This worked.

Please note that the install was to be fresh but com\_civicrm/admin/configure.php from the install directory detected an existing table in the schema and required an upgrade install, so I had to restore the settings files to complete the install.

* components/com\_civicrm/civicrm.settings.php
* administrator/components/com\_civicrm/civicrm.settings.php.

After this, all seems well...
> 2 votes

---
Tags: relationships, formbuilder
---


title: Permissions not saved

text:
# Question
Title: Permissions not saved
when trying to save permissions for user roles CiviCRM permissions(CiviCRM \> Administer \> Users and Permissions \> Permissions (Access Control) \> Wordpress Access Control), the permission are not saved and appears to be unchecked everytime I save them.

Wordpress CiviCRM 5.67.1 PHP 8.2

# Answer
> 2 votes
I have seen a similar problem when the application has too many roles resulting in a huge permission matrix.

Check if there is a PHP warning or error for max\_input\_vars in the PHP log. If yes, try increasing the size.

---
Tags: permissions
---


# Question
Title: Cron doesn't work after moving CiviCRM to sudomain
For PHP version reason, I move Joomla! & CiviCRM from example.org/civicrm to civicrm.example.org. I changed all civicrm.settings.php in admin and frontend folders and I emptied the cache, template\_c and log folder and CIVICRM\_SITE\_KEY is always the same. Everything works fine and cron URL could be fetch (blank screen on the web but Status: 200 after crontab run) So, no mailing is sent automatically. But I can send it when I run the task manually ?!

On CiviCRM status, I can read that no cron is running. But at tihs time, I really don't know where to find to resolve this issue.

I tried both https://example.org/administrator/components/com\_civicrm/civicrm/bin/cron.php?name=&pass=&key= and the command wget -O - -q -t 1 'https://example.org/administrator/components/com\_civicrm/civicrm/bin/cron.php?name=&pass=&key=', results are OK but CiviCRM doesn't recognize those execution.

I also tried to change PHP version (7.4, 8.0 and 8.1), without any change. I only have a warning about session when I display PHP errors.

On this thread For some reason, cron doesn't work. On CMS joomla, I note that the cron user must be a super-admin, but I tested and it only work once : now, there is an error status with cron in CiviCRM.

# Answer
> 0 votes
Can you use the `cv` method? That works well.

---
Tags: joomla, cron, migration
---


title: Pledges on contact's dashboard

text:
# Question
Title: Pledges on contact's dashboard
I'm using CiviCRM 5.67 with Drupal 7. On the contact's dashboard the "Pledges" tab is missing. On the admin page "Customize data and screen" \> "Display preferences" I've checked in the first box to show Pledges, but the tab is not shown up. Where should I set something to show up?

Thanks!

# Answer
> 4 votes
Maybe your site is using the Contact layout editor extension where you can over-ride the tabs or any custom module or extension that hides the tab

# Answer
> 2 votes
Ensure the CiviPledge component/extension is enabled:

Visit **Administer -\> System Settings -\> Extensions** and enable CiviPlege.

---
Tags: pledges
---


# Question
Title: Contact Quick Edit, refreshParent after CRM.api3('CustomValue', 'create)?
Stuck with jQuery, which intercepts a contact Quick Edit and updates a custom field. All is fine and a value gets updated in the database but is not immediately shown, need to click "Edit" again to see it changed. Have been searching high and low here https://docs.civicrm.org/dev/en/latest/framework/ajax/#crmrefreshparent and in the code for "refreshParent" to no avail. Any pointer in the right direction please?

```
CRM.$(function ($) {
$(document).on('crmFormSuccess', function (e, data) {
    var changedElement = $(this);
    console.log(changedElement);
    if (typeof (data) == 'object') {
        // data.status: success|| form_error
        if (data.status === 'success') {
            const userContext = data.userContext.split('=');
            const cid = userContext[userContext.length - 1];
            CRM.api3('Contact', 'get', {
                "return": ["custom_1", "custom_2"],
                "id": cid
            }).then(function (result) {
                    CRM.api3('CustomValue', 'create', {
                        "entity_id": result.id,
                        "custom_2": result.values[result.id].custom_1 == "1"?   "1" : "0"
                    }).then(function (result) {
                       // Please, refreshParent, if you can!
                        }, function (error) {
                        // oops
                    });
            }, function (error) {
                // oops
            });
        }
    }
 });
});

```

# Answer
Use below

```
$('.crm-custom-set-block-5 .crm-summary-block').load(CRM.url('civicrm/ajax/inline', {
  cid: '133',
  class_name: 'CRM_Contact_Page_Inline_CustomData',
  groupID: '5',
  customRecId: '1',
  cgcount: '1',
  reset: 1,
  snippet: 5,
  type: 'page'
}), function() {
  $(this).trigger('crmLoad');
});

```

replace

1. cid to contact\_id
2. groupId with custom group Id
3. .crm-custom-set-block-5, replace 5 with custom group id
> 2 votes

---
Tags: javascript, ajax, jquery
---


# Question
Title: What Bulk / Transactional Email Delivery Service do you use with CiviCRM? What is your experience like?
I know this isn't a typical stackexchange question - but where else would we have a discussion like this?

Our journey with email delivery via CiviCRM has been interesting. First we were sending email blasts using our self hosted email server. Deliverability was good, but we often ended up in spam folders. Then we started using Sparkpost from Messagebird - overall it was a better experience but recently people have been reporting that they never get any emails - not even spam - which tells us that their email providers might be totally blocking our emails or our provider's IPs.

Providers like Mailchimp, etc are so successful because they work hard to make sure their emails get through to everyone. CiviCRM has a number of plugins for email providers - which ones do you use? How has your experience been? Here are a few that I found:

There are other providers too, like PostMark & Brevo (used to be sendinblue), but as far as I know, Civi does not have support for them.

# Answer
We use AWS SES without issues. Setup is straigtforward. Deliverability is excellent. Costs are covered by their $1000/pa for non-profits. No complaints there.
> 2 votes

# Answer
We use AWS SES as well, with a dedicated IP address, also for free with non-profit credits. Can't complain. AWS will send emails faster than CiviCRM can.
> 1 votes

# Answer
I would check out postmarkapp.com SMTP service. They do transactional emails, but they also have a broadcast stream for this kind of thing. They're well known for being easy to set up, and they're deliverability tends to be better than these others.
> 0 votes

# Answer
I use Mailjet for some of my client, which is brilliant at delivery. There's also an extension called Mailjetty which reports bounces back in Civi. You can test for free too, which is good.
> 0 votes

---
Tags: civimail, email, mailing, mailserver, inbound-email
---


# Question
Title: How to create a drop-down list of Groups for a form?
Our organisation (a u3a) has many Groups. Each Group (apart from administrative Groups) has a Group coordinator. I have created a custom field ‘Coordinator of’ and would like the profile entry to be a multi select drop-down list containing the current list of Groups. (Some members coordinate more than one Group).

This is because although I can create a Group of Group Coordinators for mailing purposes, I like to add a token, indicating which Groups they coordinate, to the email.

There is a field in the profile for a contact for Group membership that does this. Can I use this somehow in a custom field or do I need to add a hook and write code?

We are working in Wordpress and I am very much a newbie.

# Answer
> 0 votes
welcome - as i understand this, you want a 'multiple record' field on the contact, so you can then include a token which would list all the Groups they are a coordinator for? I am not sure if tokens currently work well for multiple records. I just set up a custom field on dmaster demo site, and that worked fine in terms of having my contact set up as coordinator for several groups. but i don't see the token for that field (which may be where you already got to?).

I did also try the Fuzion Token extension but no change there.

This old reply suggests it can be done Tokens for Custom Field Set with Multiple Records and there seems to be some suggestions here with more details, though for a different context

---
Tags: profile, groups, drop-down
---


# Question
Title: Unable to download CSV from searchkit result
After CiviCRM upgrade from 5.58.1 to 5.65.2, Download csv from search kit display fails (progress bar freezes and does not complete).

Checked CiviCRM and Wordpress logs for any errors, but nothing was logged. Any pointers to debug?

# Answer
> 3 votes
This is a known issue in CiviCRM 5.65.x and was fixed as part of 5.67.x release.

You can either upgrade CiviCRM to 5.67.x or apply patch

HTH

Pradeep

---
Tags: upgrade
---


# Question
Title: What permission set allows a user to be able to save a field mapping?
Drupal 7 - Civi 5.45.7 In the past users have been able to create new field mappings (from the Advanced Search screen). Now I can't seem to find a way to allow them to do that without granting "CiviCRM: administer CiviCRM". Am I just overlooking something? Is there a way to grant average users the ability to create and update field mappings?

# Answer
At some point it became a javascript form and it says `<span ng-if="data.columns.length && perms.admin">`, so it means "administer CiviCRM".

See https://github.com/civicrm/civicrm-core/blob/097b4785cff256c7d46bb8ca8b394ed0d7483040/ang/exportui/export.html#L22

and

https://github.com/civicrm/civicrm-core/blob/097b4785cff256c7d46bb8ca8b394ed0d7483040/ang/exportui/exportui.js#L28
> 0 votes

# Answer
This option was initially not permissioned which caused errors for some users who could access but not save field mappings. Now it is well-aligned for those who can an export can also save a mapping since version 5.63.
> 0 votes

---
Tags: export, advanced-search, field-mapping
---


# Question
Title: I have a randomly recurring problem in Search Builder. Why do the drop-down lists of options sometimes collapse horizonally?
Screen shot of the collapsed filter options.  CiviCRM 5.66.0 Joomla! 3.10.11

# Answer
> 2 votes
Search Builder is a legacy part of CiviCRM which is no longer actively maintained.

It is recommended to use SearchKit which is included with your version of CiviCRM and can do everything Search Builder could do and much more.

---
Tags: joomla, search
---


# Question
Title: WordPress group sync - after migrating from Drupal
I'm migrating my site from Drupal to WordPress, and could use some advice about how to handle syncing between CiviCRM groups (not members) and WordPress groups.

I guess the first question is: how do I deal with the leftover user IDs attached to contact records? There are a few hundred contacts that show a user ID, but those user IDs don't exist in WordPress (I'm currently the only actual user on the site):

Can I simply run a SQL query to delete all the user ID values? If so, where are they located? I haven't found them yet.

Once I've cleaned that up, I need to choose a method for syncing groups between WordPress and CCRM. It looks like CiviCRM Groups Sync is the right choice for that, am I correct?

I've been getting a little confused between CiviCRM WP Profile Sync, CiviCRM WP Member Sync, BP Groups CiviCRM Sync, and CiviCRM Groups Sync. I installed CiviCRM WP Profile Sync first, because it was easy to find and install, but I guess that only deals with **Members** in CiviCRM land?

# Answer
> how do I deal with the leftover user IDs attached to contact records?

Clear your `civicrm_uf_match` table except for your own record - i.e. the one that has your User ID and Contact ID. You'll then need to decide how and why you want to create Users from your Contacts...

1. Do they have memberships in CiviCRM?
2. Do they need to login for some reason?

Depending on the answer above, you have a couple of options:

* For membership-based Users, use CiviCRM Member Sync. You can then create your Users from the plugin's "Manual Sync" admin screen.
* For login-based Users, you can create Users one-by-one with CiviCRM's built-in "Create User Record" option in the Actions menu on the Contact View screen. Or you can use CiviCRM Profile Sync which has a "Create Users from Contacts" Bulk Action in CiviCRM that you can enable by adding `define( 'CIVICRM_WP_PROFILE_SYNC_BULK', true );` to your `wp-config.php` file.

> Wordpress groups

WordPress doesn't have groups out of the box, so you need to decide which plugin you want to use to provide them.

BuddyPress can provide them if you're after social media style discussion groups and that's what BP Groups CiviCRM Sync is for - it works in a similar fashion to the Drupal OG Groups Sync module.

The "Groups" plugin can also provide them and that's what CiviCRM Groups Sync is for - these groups are permissions-based groups and don't do anything in and of themselves but can be used to grant (or revoke) access to content.

Your choice of group type depends on your use case.

Hope that helps get you started.
> 5 votes

---
Tags: wordpress, groups, sync
---


title: Send a Mail with htlm and plain text

text:
# Question
Title: Send a Mail with htlm and plain text
I would like, when I write a mail from the contact view (so not CiviMail) and enter my message in the html field and send it, that it also sends out a plain text view. In the current setting, users who use the text-only view receive an empty mail.

And I wouldn't like to have to explain to everyone that they have to copy the written mail into the text-only window again. Is there a technical solution?

Thank you!

# Answer
It's supposed to automatically fill in the text version based on the html version if the text version is blank.

Some things to check:

* Is the text version in your email completely blank? Does it contain invisible spaces or tabs or blank lines? That will get interpreted as "not empty" so will send what appears to be a blank text version.
* What version of civi are you using? If it's very old it might not do it automatically.
> 0 votes

---
Tags: email
---


# Question
Title: How to make full-text search on activities show the same results to admins and regular CiviCRM editors?
Using the full-text search to find one word, as an admin I get some results but with with my test account (no admin privileges) I don't see any. This is a word that so far only appears in the "Subject" and "Details" fields of a couple of activities. Is there a permission I have missed to enable or is this a bug?

More details (added later):

* With the same test account, using "Find Activities" and introducing the same word, the query shows search results correctly.

# Answer
> 1 votes
You need the "view all activities" permission. See https://github.com/civicrm/civicrm-core/blob/fe68d8eea3ffaa1d495bfe2563b755897b1759b6/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/FullText/Activity.php#L32

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


title: Batch marking 'not a duplicate'

text:
# Question
Title: Batch marking 'not a duplicate'
Just wondering if it's possible to batch mark multiple contacts as 'Not a duplicate' through the dedupe rule menu. I've tried selecting all the contacts via the checkmark and using 'not a duplicate' but this only marks the first one as not a duplicate. It's restricting workflow at the moment due to the amount of non-duplicates my organisation is getting.

# Answer
> 1 votes
This isn't supported within the core dedupe screen but it does appear that the Deduper extension offers this:

You can raise an issue here for a feature improvement. It is a gap since batch processes for all other actions are possible on the dedupe screen.

---
Tags: duplicate-contacts
---


# Question
Title: WordPress error: Creation of dynamic property ... is deprecated
I have a brand new installation of WP+CiviCRM on a virtual private server. Every page loads with these errors at the top of the page:

```
Deprecated: Creation of dynamic property CiviCRM_For_WordPress_Admin::$menu_page
is deprecated in /var/www/vhosts/my.domain.tld/httpdocs/wp-content/plugins/civicrm/includes/civicrm.admin.php on line 629

Deprecated: Creation of dynamic property CiviCRM_For_WordPress::$wp_get
is deprecated in /var/www/vhosts/my.domain.tld/httpdocs/wp-content/plugins/civicrm/civicrm.php on line 1276

Deprecated: Creation of dynamic property CiviCRM_For_WordPress::$wp_post
is deprecated in /var/www/vhosts/my.domain.tld/httpdocs/wp-content/plugins/civicrm/civicrm.php on line 1277

Deprecated: Creation of dynamic property CiviCRM_For_WordPress::$wp_cookie
is deprecated in /var/www/vhosts/my.domain.tld/httpdocs/wp-content/plugins/civicrm/civicrm.php on line 1278

Deprecated: Creation of dynamic property CiviCRM_For_WordPress::$wp_request
is deprecated in /var/www/vhosts/my.domain.tld/httpdocs/wp-content/plugins/civicrm/civicrm.php on line 1279

```

I believe this is merely a warning and not something I can fix; it would need to be fixed in the core code. So **how do I hide these errors?**

WordPress 6.4.1
CiviCRM 5.67.1
PHP 8.2.12

**EDIT:** I found that my VPS has **debugging turned on** and when I turn that off, these errors disappear. While that's an immediate way to hide these errors, this also means that *any other errors are also hidden.* Because of this implication, I'd like to find a way to turn this debugging on again but explicitly ignoring these particular errors.

# Answer
Those notices have already been fixed and the fix will be included in the upcoming 5.69 release.
> 1 votes

---
Tags: error, installation, deprecated
---


# Question
Title: fatal error "unconstructed IntlDateFormatter" after upgrade to php 8.1
On submitted contribution pages, I get a fatal php error "unconstructed IntlDateFormatter." At first I thought the answer was a simple case of a missing php-intl extension. However, it is there. That has brought me up short. Searching this site and the web generally comes up with plenty of cases where Intl is missing, but I can also see that in those cases the error is that it is missing not "unconstructed." I am completely mystified as to what the problem is. I'm hoping someone here has an idea. Here is the Apache error log:

```
[Mon Nov 27 20:46:49.071498 2023] [proxy_fcgi:error] [pid 2064307:tid 140013073311424] [client 142.113.152.41:60473]
AH01071: Got error 'PHP message: PHP Fatal error:  Uncaught Error: Found unconstructed IntlDateFormatter in /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/php-8.1-strftime.php:105
Stack trace:
#0 /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/php-8.1-strftime.php(105): IntlDateFormatter->format()
#1 /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/php-8.1-strftime.php(204): PHP81_BC\\{closure}()
#2 [internal function]: PHP81_BC\\{closure}()
#3 /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/php-8.1-strftime.php(185): preg_replace_callback()
#4 /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/Log.php(887): PHP81_BC\\strftime()
#5 /var/www/civi.sitename.org/wordpress/wp-content/plugins/civicrm/civicrm/vendor/pear/log/Log/file.php(294): Log->formatTime()
#6 /var/www/civi.sitename.org/wordpress/wp-content/plugins/...', referer: https://civi.sitename.org/civicrm/contribute/transact/?_qf_Confirm_display=true&qfKey=CRMContributeControllerContribution187bnnkv5540g8sk0cok0g04owsc8gcosog88k8cs84808w4ok_5444

```

No entry in the CiviCRM log.

Tried with both PHP 8.1.26 and 8.2.13. Works fine with PHP 7.4. Current php extension list is a perfect match for php-7.4 on the same server except for php-json which seems to be baked in starting with version 8.

I'm running Civi 5.66.1 on WordPress 6.4.1.

# Answer
See https://lab.civicrm.org/dev/core/-/issues/4739.

If you want to stay on 5.66 instead of upgrading to 5.67 you have some choices:

(It should work with php 8.1.26 too since they released a temp patch, but you said you tried so I'm not sure about that.)
> 4 votes

---
Tags: php8
---


# Question
Title: How do I update the password for one of our administrators
One of our contacts has been made an administrator but they have forgotten their password. How can we update their password so that they can log in?

# Answer
CiviCRM does not have its own authentication tools per ce (well, perhaps except its stand-alone version). Therefore password rescue should happen at your CMS (WordPress, Drupal, Joomla) level.
> 2 votes

---
Tags: passwords
---


# Question
Title: Create links between contacts that create corresponding relationships in the background
We work with three contact categories that always belong together in some way (people who form groups and are interested in a house).

I have used the Employe field for the connection between the people and their groups and find it really great that it then also creates the corresponding relationship for both contacts.

Is there a way to store the same functionality in the user-defined fields that I have created, e.g. property (house) and owner (person)?

Many thanks Gregor

# Answer
> 1 votes
You may want to try "Contact Reference" or "Entity Reference" (in the latest CiviCRM versions) as one of the user-defined fields - much depending from your set-up details and needs so it's tricky to narrow the exact configuration parameters here.

---
Tags: contacts, relationships
---


title: Send Reminder filing

text:
# Question
Title: Send Reminder filing
When initiating the Send Reminder job I am getting this error:

I have similar issues showing up in System Status

How can I find out what is causing the violation?

# Answer
> 1 votes
Run below query

```
ALTER TABLE civicrm_activity_contact DROP FOREIGN KEY FK_civicrm_activity_contact_activity_id;

ALTER TABLE civicrm_activity_contact
ADD CONSTRAINT `FK_civicrm_activity_contact_activity_id` FOREIGN KEY (`activity_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE CASCADE;

```

Note: Take db backup before running query

# Answer
> 2 votes
This ***civicrm\_activity\_fudge*** foreign key reference doesn't seem to be a part of the default *civicrm\_activity\_contact* table structure, you may want to check why it is there and, depending on your circumstances, fix it or remove it from the table. Please do not forget to **backup the whole database** before making changes.

---
Tags: scheduled-reminders
---


# Question
Title: Restrict membership types by contact type
Is there any easy way to restrict the membership types available to be added to certain contact types from the new membership screen within CiviCRM?

We have an organisational membership class that is inherited by employees and volunteers. I want to stop staff accidentally assigning that membership type to individuals or ineligible organisation types.

# Answer
> 0 votes
Perhaps add a set of Custom Fields used for Memberships and use it in a Profile with the "Limit listings to a specific Group?" option turned on?

---
Tags: civimember, contact-types
---