diff -u b/lib/Drupal/profile2/ProfileAccessController.php b/lib/Drupal/profile2/ProfileAccessController.php --- b/lib/Drupal/profile2/ProfileAccessController.php +++ b/lib/Drupal/profile2/ProfileAccessController.php @@ -83,7 +83,10 @@ return TRUE; } - $pid = $profile->id(); + // For existing profiles, check access for the particular profile ID. When + // creating a new profile, check access for the profile's bundle. + $pid = $profile->id() ?: $profile->bundle(); + $uid = $account->id(); if (isset($this->accessCache[$uid][$operation][$pid][$langcode])) { return $this->accessCache[$uid][$operation][$pid][$langcode];