diff --git a/CHANGELOG b/CHANGELOG
index aef536b2a8ef286f656528f500614186b8a4ff60..3fd908d30d68b658b76e58c21a8717675f19f961 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,5 @@
 Please view this file on the master branch, on stable branches it's out of date.
-v 8.10(unreleased)
+v 8.10.0(unreleased)
   - Add notifications dropdown for groups
 
 v 8.9.0 (unreleased)
diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee
index 5bb9647f6c2b20b8674d5c018b92c97775c1109a..9493a57580183434dde2d1e017668c88383d78ca 100644
--- a/app/assets/javascripts/dispatcher.js.coffee
+++ b/app/assets/javascripts/dispatcher.js.coffee
@@ -85,6 +85,7 @@ class Dispatcher
       when 'groups:show'
         shortcut_handler = new ShortcutsNavigation()
         new NotificationsForm()
+        new NotificationsDropdown()
       when 'groups:group_members:index'
         new GroupMembers()
         new UsersSelect()
diff --git a/app/assets/stylesheets/framework/blocks.scss b/app/assets/stylesheets/framework/blocks.scss
index 38023818709d0847059797b44c68dc338cd5fe32..41e77a4ac682f5994f1daa118892c2274c4ca0bf 100644
--- a/app/assets/stylesheets/framework/blocks.scss
+++ b/app/assets/stylesheets/framework/blocks.scss
@@ -137,7 +137,7 @@
     margin: 0;
     font-size: 24px;
     font-weight: normal;
-    margin-bottom: 5px;
+    margin-bottom: 10px;
     color: #4c4e54;
     font-size: 23px;
     line-height: 1.1;
diff --git a/app/assets/stylesheets/pages/groups.scss b/app/assets/stylesheets/pages/groups.scss
index ac7721cbe1512ad19cfc6d2178794fefe36c2835..101faf5917430cead44c9c2b3f7c76d1652fd440 100644
--- a/app/assets/stylesheets/pages/groups.scss
+++ b/app/assets/stylesheets/pages/groups.scss
@@ -48,11 +48,7 @@
 
   .access-request-button {
     @include btn-gray;
-    position: absolute;
-    right: 16px;
-    bottom: 32px;
-    padding: 3px 10px;
+    margin-right: 10px;
     text-transform: none;
-    background-color: $background-color;
   }
 }
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index f65f9da3f9e66b46a6f416c56ab6c85a5c661437..a04bf7df722ae30525f7f34505fadd94674b8555 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -74,6 +74,10 @@ class GroupsController < Groups::ApplicationController
   def edit
   end
 
+  def projects
+    @projects = @group.projects.page(params[:page])
+  end
+
   def update
     if Groups::UpdateService.new(@group, current_user, group_params).execute
       redirect_to edit_group_path(@group), notice: "Group '#{@group.name}' was successfully updated."
@@ -100,10 +104,6 @@ class GroupsController < Groups::ApplicationController
     @shared_projects = GroupProjectsFinder.new(group, only_shared: true).execute(current_user)
   end
 
-  def projects
-    @projects = @group.projects.page(params[:page])
-  end
-
   def authorize_create_group!
     unless can?(current_user, :create_group, nil)
       return render_404
diff --git a/app/controllers/notification_settings_controller.rb b/app/controllers/notification_settings_controller.rb
index aacbefd4ab89e876898562ca2c63de10f8651b2f..8ec4bb1233f52d44befe8d620b73736be39ce013 100644
--- a/app/controllers/notification_settings_controller.rb
+++ b/app/controllers/notification_settings_controller.rb
@@ -2,8 +2,6 @@ class NotificationSettingsController < ApplicationController
   before_action :authenticate_user!
 
   def create
-    resource = find_resource
-
     return render_404 unless can_read?(resource)
 
     @notification_setting = current_user.notification_settings_for(resource)
@@ -21,12 +19,12 @@ class NotificationSettingsController < ApplicationController
 
   private
 
-  def find_resource
-    resource =
-      if params[:project].present?
-        Project.find(params[:project][:id])
-      elsif params[:namespace].present?
-        Group.find(params[:namespace][:id])
+  def resource
+    @resource ||=
+      if params[:project_id].present?
+        Project.find(params[:project_id])
+      elsif params[:namespace_id].present?
+        Group.find(params[:namespace_id])
       end
   end
 
diff --git a/app/helpers/notifications_helper.rb b/app/helpers/notifications_helper.rb
index 77783cd764060c392a1d922a75e564274ea46c82..7e8369d0a051b2d272981f597215981f69eceedb 100644
--- a/app/helpers/notifications_helper.rb
+++ b/app/helpers/notifications_helper.rb
@@ -72,6 +72,6 @@ module NotificationsHelper
   # Create hidden field to send notification setting source to controller
   def hidden_setting_source_input(notification_setting)
     return unless notification_setting.source_type
-    hidden_field_tag "#{notification_setting.source_type.downcase}[id]", notification_setting.source_id
+    hidden_field_tag "#{notification_setting.source_type.downcase}_id", notification_setting.source_id
   end
 end
diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml
index 5792c5dbac556614bdb9b52640351be2de20b7bc..a0a6762edcf4a9ed150f9171949ccb8887d781dc 100644
--- a/app/views/groups/show.html.haml
+++ b/app/views/groups/show.html.haml
@@ -15,14 +15,17 @@
           %span.visibility-icon.has-tooltip{ data: { container: 'body' }, title: visibility_icon_description(@group) }
             = visibility_level_icon(@group.visibility_level, fw: false)
 
-        = render 'notifications/buttons/notifications', notification_setting: @notification_setting
+        %span.hidden-xs
+          = render 'shared/notifications/button', notification_setting: @notification_setting
+
+        - if current_user
+          .pull-right
+            = render 'shared/members/access_request_buttons', source: @group
 
       - if @group.description.present?
         .cover-desc.description
           = markdown(@group.description, pipeline: :description)
 
-    - if current_user
-      = render 'shared/members/access_request_buttons', source: @group
 
 %div{ class: container_class }
   .top-area
diff --git a/doc/workflow/notifications.md b/doc/workflow/notifications.md
index fe4485e148a629423eb1939c11b9f618a8036a77..b4a9c2f3d3e622a837cdc943607261656efecd64 100644
--- a/doc/workflow/notifications.md
+++ b/doc/workflow/notifications.md
@@ -37,12 +37,14 @@ This means that you can set a different level of notifications per group while s
 to have a finer level setting per project.
 Organization like this is suitable for users that belong to different groups but don't have the
 same need for being notified for every group they are member of.
+These settings can be configured on group page or user profile notifications dropdown.
 
 #### Project Settings
 
 Project Settings are at the top level and any setting placed at this level will take precedence of any
 other setting.
 This is suitable for users that have different needs for notifications per project basis.
+These settings can be configured on project page or user profile notifications dropdown.
 
 ## Notification events
 
diff --git a/spec/controllers/notification_settings_controller_spec.rb b/spec/controllers/notification_settings_controller_spec.rb
index ad48b9e90876af129653a67d816d22375e778783..07734a2dc192b404a1daef41fd7d109d7200ea06 100644
--- a/spec/controllers/notification_settings_controller_spec.rb
+++ b/spec/controllers/notification_settings_controller_spec.rb
@@ -13,7 +13,7 @@ describe NotificationSettingsController do
     context 'when not authorized' do
       it 'redirects to sign in page' do
         post :create,
-             project: { id: project.id },
+             project_id: project.id,
              notification_setting: { level: :participating }
 
         expect(response).to redirect_to(new_user_session_path)
@@ -40,7 +40,7 @@ describe NotificationSettingsController do
 
         it 'creates notification setting' do
           post :create,
-               project: { id: project.id },
+               project_id: project.id,
                notification_setting: { level: :participating }
 
           expect(response.status).to eq 200
@@ -53,7 +53,7 @@ describe NotificationSettingsController do
         context 'with custom settings' do
           it 'creates notification setting' do
             post :create,
-                 project: { id: project.id },
+                 project_id: project.id,
                  notification_setting: { level: :custom }.merge(custom_events)
 
             expect(response.status).to eq 200
@@ -68,7 +68,7 @@ describe NotificationSettingsController do
 
         it 'creates notification setting' do
           post :create,
-               namespace: { id: group.id },
+               namespace_id: group.id,
                notification_setting: { level: :watch }
 
           expect(response.status).to eq 200
@@ -81,7 +81,7 @@ describe NotificationSettingsController do
         context 'with custom settings' do
           it 'creates notification setting' do
             post :create,
-                 namespace: { id: group.id },
+                 namespace_id: group.id,
                  notification_setting: { level: :custom }.merge(custom_events)
 
             expect(response.status).to eq 200
@@ -98,7 +98,7 @@ describe NotificationSettingsController do
 
       it 'returns 404' do
         post :create,
-             project: { id: private_project.id },
+             project_id: private_project.id,
              notification_setting: { level: :participating }
 
         expect(response.status).to eq(404)