I am trying to import contacts and getting the following errors:

Cannot execute queue "user_job_6". The "civicrm_queue.runner" property is missing.

enter image description here

Any idea why?

5.61.4 wordpress

Edit: this issue fixed itself after 24 hours - using same dataset.

  • if you haven't already, would it be worth retrying the import with just one row of data to check it is nothing to do with any of the data in the csv?
    – petednz - fuzion
    Jun 9, 2023 at 20:51
  • I assume you are using the core importer? Also replicated the error with the API CSV Importer.
    – Andy Burns
    Jul 18, 2023 at 19:16
  • I think the answer is below - it’s a roll of the device which task in the civicrm_queue table gets executed - I suspect the queue table is supposed to be empty eventually. Mine has 55 records in it - are these vestiges of aborted earlier tasks? Mar 31 at 2:04

3 Answers 3


I've come across a similar issue. Looking in the database I could see a row in the civicrm_queue table with the same name but NULL for runner.

I fixed the issue by deleting that row in the table and performing the import again. The import then worked as normal.

I have a suspicion that there may be a bug with CiviCRM core and I've created an issue for this:


The reason that it may work sometimes and not others is that CiviCRM will choose a different job number for each import. It depends whether that particular job number has an entry in the civicrm_queue table as to whether the import works or not.

Update: this bug was fixed in CiviCRM 5.68 by https://github.com/civicrm/civicrm-core/pull/28051.

  • I believe you're absolutely correct. My table has mostly null values and if I start an import a dozen times, I eventually get past those and then it works. THANK YOU for creating an issue to get this fixed. In the meantime, can we just delete those user tasks that have Null in the runner field? Mar 30 at 19:24
  • See lab.civicrm.org/dev/core/-/issues/4554#note_151215 for the query I ran as a temporary workaround. The underlying issue should have been fixed in CiviCRM 5.68. So I'd suggest upgrading if you haven't done so already. Apr 1 at 10:10
  • 1
    William - your query ran perfectly and deleted all the entries in the Civicrm_queue table - running contact imports to do bulk updates works perfectly now. We're on 5.66 so don't have the corrected version yet. We will update soon, but meanwhile thanks for your help. I don't see anyplace here to thank you but would give you a big thumbs up for all your comments on the subject. Apr 10 at 14:38
  • Thanks Rick. Glad you found it helpful. You can upvote the answer if you haven't done so already. Apr 11 at 9:55

I also replicated the "civicrm_queue.runner property be missing" issue using external ID's using the API CSV Importer. On another post Laryn points out external ID's failed, so simply do a CID to external ID mapping pre-processing first.

Sample data format

enter image description here


Update - got it to run, as alluded to above - to get this import to run, I repeatedly started it, noting the user_task_xx was different each time, and I was getting these task numbers in roughly increasing numerical order - I continued until the job number was one of those that did NOT have Null in the runner name column. So now I feel sure that those records are the issue. Does anyone know whether the records for user job can be deleted for those where the Runner Column has "null" instead of "task"? (and no, I don't know why this is bolded!)


I am having this same problem with trying to import "do not email" flag for a batch of contacts. This worked fine a few days ago, but failed multiple times today. I have cut down the file to small batches and finally to one record and then eventually to just two columns ("contact ID" and "Do Not Email") and keep getting the same error. Looking at the civicrm_queue table, I see 54 records in the civicrm_queue table, with each row having a Name of "user_job_xx" where xx is a number from 1 to 59. The jobs names are in ascending order with a few numbers skipped, up to 48, which is then followed by one of the skipped numbers. So all the sequential queues have a value of "null" for the column "Name - name of the task runner". After the break in the increasing numbers, the job 7 has a runner name of "task" and all the rest also have that name. Is it possible this table is corrupted, and could some records be deleted? The post above indicates that a task number is chosen at random, so this might work next time I try it?

civicrm_queue table contents showing the transition from null to task for name of task runner

  • You've posted this as an answer, but you appear to also be asking questions. StackExchange isn't a discussion forum it's a question and answer site. You are more likely to get answers to your questions if you post them as new questions (with a link here if relevant). Apr 1 at 10:03
  • In answer to your question, my understanding is that it should be safe to delete records from civicrm_queue so long as you aren't running any jobs in the background. See lab.civicrm.org/dev/core/-/issues/4554#note_150992 Apr 1 at 10:06
  • The reason the first paragraph was in bold is that you had ====== directly below it which denotes a heading in markdown civicrm.stackexchange.com/editing-help#headers. I added a blank line to fix this. Apr 1 at 10:07
  • William is correct on all this - note that he's got a query above that will delete all unneeded records in the civicrm_queue table and it works fine and corrected the error for me. Note also that William reported this error and it has been addressed in 5.68 (we're at 5.66 and that's why it's still affected us) Thanks William! Apr 10 at 14:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.