diff --git a/app/controllers/admin/education/programs_controller.rb b/app/controllers/admin/education/programs_controller.rb
index 818067ddfc5672269aa4e01ea3d72f69246ba322..46e8e91d448d03fd5f8a584d91abd4d4794ee6fa 100644
--- a/app/controllers/admin/education/programs_controller.rb
+++ b/app/controllers/admin/education/programs_controller.rb
@@ -11,18 +11,22 @@ class Admin::Education::ProgramsController < Admin::Education::ApplicationContro
   def reorder
     parent_id = params[:parentId].blank? ? nil : params[:parentId]
     ids = params[:ids] || []
+    programs = []
     website_ids = []
     ids.each.with_index do |id, index|
       program = current_university.education_programs.find(id)
+      programs << program
+      website_ids.concat(program.list_of_websites.map(&:id))
+      programs.concat(program.descendents) if parent_id != program.parent_id
       program.update(
         parent_id: parent_id,
         position: index + 1,
-        skip_websites_categories_callback: true
+        skip_github_publication: true
       )
-      website_ids.concat(program.website_ids)
     end
-    current_university.communication_websites.where(id: website_ids.uniq).each do |website|
-      website.set_programs_categories!
+    website_ids.uniq.each do |website_id|
+      github = Github.with_website current_university.communication_websites.find(website_id)
+      github.send_batch_to_website(programs, message: '[Program] Reorder programs.')
     end
   end