Steps to reproduce:
- Do a fresh install of Drupal.
- Log out
- Register a new user (with setting requiring administrator approval of new account - which is default).
- See the Mail notifiying the new user that his account is awaiting approval.
- See the mail notifying the site admin of a new user having registered.
- Log in as admin and activate the new user.
- No mail is being sent to the user.

The new user therefore has no way of logging into the site.

I tested this on a local install and on an installation on a dedicated server with different settings for the sites e-mail-address using different smtp-servers. The behavior remained the same.

Marking this as critical for now until others had a chance of testing this on their setups.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

reglogge’s picture

FileSize
866 bytes

This seems to have to do with the user's preferred language not being set after account creation.

drupal_mail in function _user_mail_notify in user.module doesn't get passed the $language parameter so no mail gets sent.

When I change the function in the way the patch shows, the mail gets sent.

This is surely the wrong way to go about this, so please don't use this patch. But it's a lead at least for more gifted developers...

scor’s picture

Status: Active » Needs review
FileSize
866 bytes

How about this one? Does it work?

scor’s picture

uploading the right patch.

reglogge’s picture

No, the patch in #3 doesn't work, at least on my local installation.

The mail notifying the user that his account is awaiting approval gets sent, but the later mail with the account details never arrives (I don't know if it's being sent at all).

reglogge’s picture

Status: Needs review » Needs work

forgot to change status...

McGo’s picture

Status: Needs work » Needs review
FileSize
636 bytes

I can not confirm the bug as it is described. The current D7 CVS Head is working. almost. This is what i did:

- Installed D7 Core from CVS
- Created an account and received the welcome message (your account is waiting for approval) to the new user and the mail for the webmasters account to approve the new user.
- logged in as webmaster (uid 1) and headed to admin/people
- Select the new user and choose "Unblock the selected User".

I then receive the confirmation mail as the new user with a link pointing to /user. BUT: The user has no chance to set a password, because the link in the mail is malformed. I figured out, the the default mail text in user.module uses the wrong variable. Please review the patch attached (ok, it is very simple).

Status: Needs review » Needs work

The last submitted patch, 892950-user-mail-token.patch, failed testing.

reglogge’s picture

Status: Needs work » Needs review
FileSize
641 bytes

The patch in #6 was not created from drupal root, so it cannot apply. New patch attached.

Can somebody else test the original issue?

EDIT: Moved this patch to a new issue since it is a different problem: #893276: Need tests for activation link in new user e-mail

reglogge’s picture

Sorry if this gets confusing. These are now two separate issues:

I created a spinoff issue for the wrong link in the users e-mail that was reported in #6. See here #893276: Need tests for activation link in new user e-mail.

Please disregard the patches from #6 and #8 !

So the status of this issue is therefore back at #6 where McGo stated that he could not reproduce the original issue with the mail not being sent.

I still can not send the after-activation mails from both a local install and from a dedicated server. The initial notification mails upon registering are being sent.

The Drupal install was the standard installation.

AaronBauman’s picture

Status: Needs review » Needs work

I cannot reproduce the issue reported in the OP.

To investigate this issue I added a watchdog() call inside _user_mail_notify(), and the call to drupal_mail() around line 3338 in user.module,v 1.1195 is indeed called.

Further, I added watchdog() calls at the end of _user_mail_text(), and verified that it returns the correct values.

Can you provide more detail about exactly what you did to create this issue?
Do you have non-default language settings?
In order to test, I used the "bulk operations" on admin/people to unblock, block, and re-block, as well as editing the user directly at user/%uid/edit.

Can you provide evidence that this is an issue at the Drupal layer and not the server or mail delivery layer?
ie. check that the smtp log shows the welcome email but not the approval email; check your mail client's spam folder; etc.

AaronBauman’s picture

Status: Needs work » Active

also: there is no patch to review yet. All the patches in this issue address #893276.
Switching back to active.

reglogge’s picture

Thanks aaronbauman for looking into this. I am conducting further tests on yet another server and no, I cannot rule out this having to to with the server or the mail delivery layer. However, the first mail to the user (notifying him of the fact that his account will have to be activated by an admin) did go out, which led me to suspect drupal as the culprit.

reglogge’s picture

I did further test with trying to send other system mails.

The exact steps were:
- Checked out Drupal head from cvs
- Created fresh database
- Created a fresh installation with profile "Standard"
- Set admin credentials
- No further changes to the site configuration (especially no language settings - the site runs in english)
- Logged out
- Registered as a new user - MAIL GOT SENT (mail notifying me that an administrator would have to approve the account).
- I logged in as admin and activated the account - NO MAIL GOT SENT to the user.
- Logged out again
- I then requested a new password with the username of the new user - MAIL GOT SENT (notifying the new user of a request to reset the password).

This worked consistently for multiple users.

Additionally I then canceled selected user accounts with all settings that enable user notification of an account cancellation. These mails also did NOT GET SENT.

So at least on my install I get some mails consistently being sent and others consistently not being sent.

Logs: I also checked the mail server logs and found log entries for the mails that were sent but nothing (also no errors) for the mails that did not get sent.

IMHO that points in the direction of something being wrong with Drupal rather than with the server or the mail-agent. What exactly this is, I don't know.

reglogge’s picture

I tested this on two different platforms:

1.) Locally on a mac with a Macports LAMP-Stack (Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/1.0.0a DAV/2 PHP/5.2.13)
2.) Remotely on a Debian Lenny Server (Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch)

reglogge’s picture

Title: Mails are not being sent after status change of user accounts on /user/[uid]/edit page » Mails to newly registered users are not being sent after administrator approval of new account

I think I've found something:

The sending of notification mail on status changes to the user is triggered by this code (line 509ff in user-module):

      // Send emails after we have the new user object.
      if (isset($edit['status']) && $edit['status'] != $account->status) {
        // The user's status is changing; conditionally send notification email.
        $op = $edit['status'] == 1 ? 'status_activated' : 'status_blocked';
        _user_mail_notify($op, $user);
      }

$edit['status'] however is never set, only in three simpletests (dblog.test (line 190), drupal_web_test_case.php (line 970) and trigger.test (line 582)). In a fresh Drupal install $edit['status'] is therefore not set and the sending of mails is not triggered.

The sending of confirmation mails can only be triggered for users created by simpletests because the tests themselves set $edit['status'].

In phpMyadmin the content of the data-column in user.table is given as '[BLOB - 0Bytes]' on my install - a further indication of nothing being in there. Also it says there: ' A serialized array of name value pairs that are related to the user. Any form values posted during user edit are stored and are loaded into the $user object during user_load(). Use of this field is discouraged and it will likely disappear in a future...'

Again. I don't really know if this makes sense or if I'm totally wrong here.

EDIT: This was total crap. The right explanation (I hope) is in #18.

reglogge’s picture

Well, I'll be damned...

Further tests reveal: The problem happens only after navigating to the user's edit page and activating the user from /user/[uid]/edit?destination=admin/people. When I activate the user there, NO MAIL gets sent.

Unblocking a single user from /admin/people results in the MAIL BEING SENT.

reglogge’s picture

Title: Mails to newly registered users are not being sent after administrator approval of new account » Mails are not being sent after status change of user accounts on /user/[uid]/edit page

Changed title of issue to reflect current status.

- All mails are being sent when the status change is made with the bulk operations on /admin/people
- No mails are being sent when the status change is made from /user/[uid]/edit

This affects all mails notifying users of status changes between blocked/activated

reglogge’s picture

Problem probably pinpointed:

In user_profile_form_submit in user.pages.inc there is the following code:

function user_profile_form_submit($form, &$form_state) {
  $account = $form_state['user'];
  $category = $form['#user_category'];
  // Remove unneeded values.
  form_state_values_clean($form_state);

  entity_form_submit_build_entity('user', $account, $form, $form_state);

  // Populate $edit with the properties of $account, which have been edited on
  // this form by taking over all values, which appear in the form values too.
  $edit = array_intersect_key((array) $account, $form_state['values']);

  user_save($account, $edit, $category);

$edit is being filled with the values from $form_state with array_intersect_key().
The value for status in both $edit and $account is now identical.

Then how can this if-statement from user_save() in user.module ever be TRUE?

      // Send emails after we have the new user object.
      if (isset($edit['status']) && $edit['status'] != $account->status) {
        // The user's status is changing; conditionally send notification email.
        $op = $edit['status'] == 1 ? 'status_activated' : 'status_blocked';
        _user_mail_notify($op, $user);
      }

For testing purposes I deleted && $edit['status'] != $account->status from the if-statement in user_save() and then the mail gets sent.

Not sure how to fix this though.

reglogge’s picture

Title: Mails to newly registered users are not being sent after administrator approval of new account » Mails are not being sent after status change of user accounts on /user/[uid]/edit page

Regarding #10: I added a watchdog() call to write out the contents of $edit and $account to user_profile-form-submit right after $edit = array_intersect_key((array) $account, $form_state['values']); and found that the status-values in both arrays are indeed identical before user_save gets called. It is therefore logical that the if-statement in user_save (see #18) will never trigger the sending of the activation mail.

The callback-function from /admin/people uses a different way to save users:

/**
 * Callback function for admin mass unblocking users.
 */
function user_user_operations_unblock($accounts) {
  $accounts = user_load_multiple($accounts);
  foreach ($accounts as $account) {
    // Skip unblocking user if they are already unblocked.
    if ($account !== FALSE && $account->status == 0) {
      user_save($account, array('status' => 1));
    }
  }
}

Here there is no change being made to $edit and therefore the activation-mail gets sent.

reglogge’s picture

FileSize
2.33 KB

The patch shows the behavior explained in #18 and #19. It adds a first watchdog() call right before user_save gets called from user_profile_form_submit and shows the values of $edit['status'] and $account->status as they are being passed on to user_save.
The second watchdog() call is from user_save itself after the if-statement triggering the sending of mails returns FALSE, which it shouldn't.

The values are always identical so the mail never gets sent.

The patch is for illustration purposes only, of course.

I've tried playing around with removing $edit from the call to user_save, but with no luck. Anyways this seems to have several ramifications which I don't really get :-(

reglogge’s picture

FileSize
2.03 KB

and the right patch... Ignore the one above.

sun’s picture

Title: Mails are not being sent after status change of user accounts on /user/[uid]/edit page » No welcome mail sent to new users after site administrator approval

Proper title. It doesn't look like these patches attempt to fix the bug?

reglogge’s picture

Nope, they don't fix it but prove that the bug exists after several commenters couldn't reproduce it.

sun’s picture

The proper way to prove that an expectation is not met is to write a test for it (or fix existing ones). I'd recommend to start doing just that.

reglogge’s picture

Status: Active » Needs review
FileSize
4.55 KB

Do you mean something like this?

The test creates two new users, blocks them and then activates the one from /admin/people and the other one from his /user/edit page.

In both cases we test for whether blocking/unblocking works and whether mails are being sent to the users.

The test fails on user unblocking from /user/[uid]/edit.

It's the first test I wrote, so bear with me...

reglogge’s picture

Dang, left some cruft in the test.

Better patch here...

The test should fail BTW.

Status: Needs review » Needs work

The last submitted patch, 892950-user-activation-test.patch, failed testing.

brian_c’s picture

I've been able to reproduce this problem locally, and may have a fix.

Here is the code in question again for reference, same as #18:


function user_profile_form_submit($form, &$form_state) {
  $account = $form_state['user'];
  $category = $form['#user_category'];
  // Remove unneeded values.
  form_state_values_clean($form_state);

  entity_form_submit_build_entity('user', $account, $form, $form_state);

  // Populate $edit with the properties of $account, which have been edited on
  // this form by taking over all values, which appear in the form values too.
  $edit = array_intersect_key((array) $account, $form_state['values']);

  user_save($account, $edit, $category);

For user_save() to send an email when a user is activated, $account->status must equal 0, and $edit->status must equal 1 at the time of the call to user_save(), so that user_save() can determine that the status has just been changed (Again, this is pointed out in #18)

The problem is that entity_form_submit_build_entity() in the above code overwrites the values of $account with values from $form_state (ie, destroying the previous state of $account), before user_save() is called. This makes it impossible to detect what has changed.

ADDITIONALLY, I believe the parameter order for array_intersect_key() is backwards; array_intersect_key() populates the return array using values from the FIRST parameter (which is $account here), but we want $edit to be populated using values from the newly submitted form data in $form_state. The only reason the current code works (insofar as saving the data properly) is because entity_form_submit_build_entity() copies all the $form_state data into $account prior to the array_intersect_key() call.

So, my solution is twofold:

1) Reverse the parameter order of array_intersect_key(), to populate $edit from $form_state values instead of $account values

2) Don't call entity_form_submit_build_entity() until after user_save()

The code above, with these two changes:


function user_profile_form_submit($form, &$form_state) {
  $account = $form_state['user'];
  $category = $form['#user_category'];
  // Remove unneeded values.
  form_state_values_clean($form_state);

  // Populate $edit with the properties of $account, which have been edited on
  // this form by taking over all values, which appear in the form values too.
  $edit = array_intersect_key($form_state['values'], (array) $account);

  user_save($account, $edit, $category);
  entity_form_submit_build_entity('user', $account, $form, $form_state);

With these changes, activating a user account now sends the email properly on my local install.

I'm afraid I don't really know my way around creating patches or tests, but I am attending the Copenhagen code sprint tomorrow (webchick invited me in person, so I can hardly say no ;) to hopefully learn just that, so I will make it my mission to get a patch for this change created and tested. (Unless someone else beats me to it)

brian_c’s picture

Status: Needs work » Needs review
reglogge’s picture

And here's the patch with the test and the proposed solution from #28.

Status: Needs review » Needs work

The last submitted patch, 892950-user-activation-mail.patch, failed testing.

brian_c’s picture

Well nuts. I was worried that moving entity_form_submit_build_entity() might have unintended consequences.

Or, is it possible that the test itself causes problems? I have no idea.

1) Is it possible we try the change by itself, without the new test? Or is that strictly forbidden?

2) I will also try a different approach, preserving the value of $account in a separate value, and passing that to user_save()

brian_c’s picture

Status: Needs work » Needs review
FileSize
1.06 KB

OK, I'm attempting to re-submit the patch with the test removed, to see how that affects the results.

reglogge’s picture

No, it's not the new test that fails, it's a load of other ones.

brian_c’s picture

OK, I have a new approach here, preserving the original status value and then restoring it, leaving everything else unchanged. This tests OK locally (email sends properly).

Here is the code:


/**
 * Submit function for the user account and profile editing form.
 */
function user_profile_form_submit($form, &$form_state) {
  $account = $form_state['user'];
  
  // preserve original value of account status
  $original_status = $account->status;
  
  $category = $form['#user_category'];
  // Remove unneeded values.
  form_state_values_clean($form_state);

  entity_form_submit_build_entity('user', $account, $form, $form_state);

  // Populate $edit with the properties of $account, which have been edited on
  // this form by taking over all values, which appear in the form values too.
  $edit = array_intersect_key((array) $account, $form_state['values']);

  // restore original account status, so user_save() can detect status change and send email
  $account->status = $original_status;
  
  user_save($account, $edit, $category);

Can you try to make a new patch with this?

I am attempting to get setup here with CVS properly so I can make my own patches, but that might take a while.

Status: Needs review » Needs work

The last submitted patch, 892950-user-activation-mail.patch, failed testing.

reglogge’s picture

Ok, first of all I refactored the test to now run from within the existing test "User administration".

This test fails upon activating a blocked user from /user/[uid]/edit because no mail gets sent to the user.

The patch only contains the refactored test.

I will test the change from #35 next.

reglogge’s picture

Status: Needs work » Needs review

pinging bot.

Status: Needs review » Needs work

The last submitted patch, 892950-user-activation-test-1.patch, failed testing.

nodestroy’s picture

Status: Needs work » Needs review
FileSize
1.04 KB

created patch from #35. worked for me on local installation

brian_c’s picture

Ha, I JUST finished downloading the whole 2.5GB Xcode, installed to get CVS, and finally rolled my very own first patch... and you beat me to it. ;)

To give an update, there's about 3-4 of us here at the CPH code sprint looking into this bug. We have another approach to try after this one too, which may be a "better" solution that simply saving and restoring the status flag.

Volx’s picture

Status: Needs review » Needs work
FileSize
2.74 KB

Hi,

I have a slightly different approach. The problem in the code was that $account is just a reference to $form_state['user']. So changes to $account change it everywhere an thus overwrite the original status, I cloned $form_state['user'] into account and used $edit as a reference to that and changed it from there.

The array_interset_key() call actually does the same as entity_form_submit_build_entity, so I removed it. My patch includes the test from #37.

Volx’s picture

Status: Needs work » Needs review
reglogge’s picture

And here is the patch from #35 combined with the new test from #37.

If everyone agrees that the new test is sufficient for testing this issue, development could proceed from here.

Let's see what the bot says...

fago’s picture

FileSize
1.09 KB

hm, just preserving the status seems like a hack for this special use-case to me. Attached patch tries to fix the problem in general.

reglogge’s picture

@fago: could you reroll your patch including the test from #37 so we can test whether your approach actually solves the issue?

brian_c’s picture

Yes agreed, #35 is definitely a workaround. I tried to get more at the root problem in #28 but clearly don't know what I'm mucking with, hence my more "minimal changes possible" approach in #35.

Volx has a better approach in #42 with more general solution, I think similar or identical to fago's approach in #45.

Volx's solution has passed the entire test suite on his local, including reglogge's test in #37.

dixon_’s picture

FileSize
3.02 KB

Here is fago's patch with the tests from regloggle in #37.

Volx’s picture

I revoke my comment that we can remove the array_intersect_key() line, so that makes my patch equivalent to patch #48.

fago’s picture

#42 has inconsistent variable naming for $edit - an array of values - and the user account. $edit should always be what it is, and not sometimes something else.

realityloop’s picture

Status: Needs review » Reviewed & tested by the community

Following the steps in original post the patch at #48 is successfully sending emails to the new user once the account is activated

webchick’s picture

Status: Reviewed & tested by the community » Fixed
sun’s picture

Priority: Critical » Major
Status: Fixed » Needs work
+++ modules/user/user.test	27 Aug 2010 10:44:09 -0000
@@ -1084,6 +1084,26 @@ class UserAdminTestCase extends DrupalWe
+    // Test unblocking of a user from /admin/people page and sending of activation mail
...
+    // Test blocking and unblocking another user from /user/[uid]/edit form and sending of activation mail

Comments should wrap at 80 chars.

+++ modules/user/user.test	27 Aug 2010 10:44:09 -0000
@@ -1084,6 +1084,26 @@ class UserAdminTestCase extends DrupalWe
+    $this->assertEqual($account->status, 1, 'User C unblocked');
+    $this->assertMail("to", $account->mail, "Activation mail sent to user C");
...
+    $this->assertEqual($account1->status, 1, 'User D unblocked');
+    $this->assertMail("to", $account1->mail, "Activation mail sent to user D");

These are the only two mail assertions in here.

1) This patch does not test whether the mail that is sent is the welcome mail (NOT the activation mail).

2) The test should parse + use the link from the mail that is sent.

Powered by Dreditor.

webchick’s picture

Issue tags: +Needs tests

Tagging.

reglogge’s picture

This test could/should be written here #893276: Need tests for activation link in new user e-mail. Or should we mark this other issue as a duplicate then?

reglogge’s picture

Status: Needs work » Needs review
FileSize
3.24 KB

Well, here are the new tests with the suggestions from #53.

I test whether the activation mail contains the string /user/reset/[uid] which should be a safe enough indication of the correct link being included.

Setting #893276: Need tests for activation link in new user e-mail to duplicate.

reglogge’s picture

Last patch had too many parameters in assertTrue() messing up the output of the test results.

Fixed.

reglogge’s picture

Cleaning up code and adding t() to messages.

Status: Needs review » Needs work
Issue tags: -Needs tests

The last submitted patch, 892950-user-activation-mail-4.patch, failed testing.

reglogge’s picture

Status: Needs work » Needs review
Issue tags: +Needs tests
reglogge’s picture

Simpler test after having found assertMailString() in drupal_web_test_case.php :-)

sun’s picture

Status: Needs review » Needs work

Thanks!

+++ modules/user/user.test	31 Aug 2010 11:09:28 -0000
@@ -1,5 +1,5 @@
-// $Id: user.test,v 1.101 2010/08/27 11:28:45 webchick Exp $
+// $Id: user.test,v 1.100 2010/08/05 23:53:39 webchick Exp $

Watch out, your local working copy is outdated. A 'cvs update' is required.

+++ modules/user/user.test	31 Aug 2010 11:09:28 -0000
@@ -29,6 +29,7 @@ class UserRegistrationTestCase extends D
+    $this->assertMailString('body', 'user/reset/' . $new_user->uid, 1);

For all these URLs, we should be checking the entire, absolute URL, i.e.:

url('user/reset/' . $uid, array('absolute' => TRUE))

And, at the right point, we want to actually use ("click") that URL/link -- that's why we should rather use pattern/regex matching here, so we get the full URL including the mail- and user-specific token.

+++ modules/user/user.test	31 Aug 2010 11:09:28 -0000
@@ -1077,33 +1078,38 @@ class UserAdminTestCase extends DrupalWe
-    $this->assertEqual($account->status, 1, 'User C not blocked');
+    $this->assertEqual($account->status, 1, t('User C not blocked'));

Can we remove these unrelated changes, please? There's still no clear direction about whether we want t() in assertion messages or not. That's discussed in a (very long) separate issue already.

Powered by Dreditor.

sun.core’s picture

Priority: Major » Normal

Only touching tests, so demoting to normal.

Tor Arne Thune’s picture

Title: No welcome mail sent to new users after site administrator approval » (Tests needed) No welcome mail sent to new users after site administrator approval
Version: 7.x-dev » 8.x-dev
Category: bug » task
Issue tags: +Needs backport to D7

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

  • webchick committed d7d9587 on 8.3.x
    #892950 by reglogge, scor, McGo, brian_c, Volx, fago: Fixed No welcome...

  • webchick committed d7d9587 on 8.3.x
    #892950 by reglogge, scor, McGo, brian_c, Volx, fago: Fixed No welcome...

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

  • webchick committed d7d9587 on 8.4.x
    #892950 by reglogge, scor, McGo, brian_c, Volx, fago: Fixed No welcome...

  • webchick committed d7d9587 on 8.4.x
    #892950 by reglogge, scor, McGo, brian_c, Volx, fago: Fixed No welcome...

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

  • webchick committed d7d9587 on 9.1.x
    #892950 by reglogge, scor, McGo, brian_c, Volx, fago: Fixed No welcome...

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.