diff --git a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index ba59e2b..e49c33b 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -636,32 +636,41 @@
     for provider_id in provider_packages:
         provider_metadata = basic_provider_checks(provider_id)
         if os.environ.get("GITHUB_ACTIONS", "false") != "true":
-            get_console().print("-" * get_console().width)
+            if not only_min_version_update:
+                get_console().print("-" * get_console().width)
         try:
             with_breaking_changes = False
             maybe_with_new_features = False
-            with ci_group(f"Update release notes for package '{provider_id}' "):
-                get_console().print("Updating documentation for the latest release version.")
+            with ci_group(
+                f"Update release notes for package '{provider_id}' ",
+                skip_printing_title=only_min_version_update,
+            ):
                 if not only_min_version_update:
+                    get_console().print("Updating documentation for the latest release version.")
                     with_breaking_changes, maybe_with_new_features = update_release_notes(
                         provider_id,
                         reapply_templates_only=reapply_templates_only,
                         base_branch=base_branch,
                         regenerate_missing_docs=reapply_templates_only,
                         non_interactive=non_interactive,
+                        only_min_version_update=only_min_version_update,
                     )
                 update_min_airflow_version(
                     provider_package_id=provider_id,
                     with_breaking_changes=with_breaking_changes,
                     maybe_with_new_features=maybe_with_new_features,
                 )
-            with ci_group(f"Updates changelog for last release of package '{provider_id}'"):
+            with ci_group(
+                f"Updates changelog for last release of package '{provider_id}'",
+                skip_printing_title=only_min_version_update,
+            ):
                 update_changelog(
                     package_id=provider_id,
                     base_branch=base_branch,
                     reapply_templates_only=reapply_templates_only,
                     with_breaking_changes=with_breaking_changes,
                     maybe_with_new_features=maybe_with_new_features,
+                    only_min_version_update=only_min_version_update,
                 )
         except PrepareReleaseDocsNoChangesException:
             no_changes_packages.append(provider_id)
@@ -682,10 +691,18 @@
                 success_packages.append(provider_id)
     get_console().print()
     get_console().print("\n[info]Summary of prepared documentation:\n")
-    provider_action_summary("Success", MessageType.SUCCESS, success_packages)
+    provider_action_summary(
+        "Success" if not only_min_version_update else "Min Version Bumped",
+        MessageType.SUCCESS,
+        success_packages,
+    )
     provider_action_summary("Scheduled for removal", MessageType.SUCCESS, removed_packages)
     provider_action_summary("Docs only", MessageType.SUCCESS, doc_only_packages)
-    provider_action_summary("Skipped on no changes", MessageType.WARNING, no_changes_packages)
+    provider_action_summary(
+        "Skipped on no changes" if not only_min_version_update else "Min Version Not Bumped",
+        MessageType.WARNING,
+        no_changes_packages,
+    )
     provider_action_summary("Suspended", MessageType.WARNING, suspended_packages)
     provider_action_summary("Skipped by user", MessageType.SPECIAL, user_skipped_packages)
     provider_action_summary("Errors", MessageType.ERROR, error_packages)
diff --git a/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py b/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
index f24c548..c2b46b1 100644
--- a/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
+++ b/dev/breeze/src/airflow_breeze/prepare_providers/provider_documentation.py
@@ -262,6 +262,7 @@
     provider_package_id: str,
     base_branch: str,
     reapply_templates_only: bool,
+    only_min_version_update: bool,
 ) -> tuple[bool, list[list[Change]], str]:
     """Retrieves all changes for the package.
 
@@ -325,21 +326,24 @@
                 except subprocess.CalledProcessError:
                     # ignore when the commit mentioned as last doc-only change is obsolete
                     pass
-            get_console().print(
-                f"[warning]The provider {provider_package_id} has {len(changes.splitlines())} "
-                f"changes since last release[/]"
-            )
-            get_console().print(f"\n[info]Provider: {provider_package_id}[/]\n")
+            if not only_min_version_update:
+                get_console().print(
+                    f"[warning]The provider {provider_package_id} has {len(changes.splitlines())} "
+                    f"changes since last release[/]"
+                )
+                get_console().print(f"\n[info]Provider: {provider_package_id}[/]\n")
             changes_table, array_of_changes = _convert_git_changes_to_table(
                 f"NEXT VERSION AFTER + {provider_details.versions[0]}",
                 changes,
                 base_url="https://github.com/apache/airflow/commit/",
                 markdown=False,
             )
-            _print_changes_table(changes_table)
+            if not only_min_version_update:
+                _print_changes_table(changes_table)
             return False, [array_of_changes], changes_table
         else:
-            get_console().print(f"[info]No changes for {provider_package_id}")
+            if not only_min_version_update:
+                get_console().print(f"[info]No changes for {provider_package_id}")
             return False, [], ""
     if len(provider_details.versions) == 1:
         get_console().print(
@@ -653,6 +657,7 @@
     base_branch: str,
     regenerate_missing_docs: bool,
     non_interactive: bool,
+    only_min_version_update: bool,
 ) -> tuple[bool, bool]:
     """Updates generated files.
 
@@ -669,6 +674,7 @@
         provider_package_id=provider_package_id,
         base_branch=base_branch,
         reapply_templates_only=reapply_templates_only,
+        only_min_version_update=only_min_version_update,
     )
     with_breaking_changes = False
     maybe_with_new_features = False
@@ -711,6 +717,7 @@
                 provider_package_id=provider_package_id,
                 base_branch=base_branch,
                 reapply_templates_only=reapply_templates_only,
+                only_min_version_update=only_min_version_update,
             )
     else:
         _update_source_date_epoch_in_provider_yaml(provider_package_id)
@@ -913,6 +920,7 @@
     reapply_templates_only: bool,
     with_breaking_changes: bool,
     maybe_with_new_features: bool,
+    only_min_version_update: bool,
 ):
     """Internal update changelog method.
 
@@ -929,12 +937,16 @@
         maybe_with_new_features=maybe_with_new_features,
     )
     proceed, changes, _ = _get_all_changes_for_package(
-        provider_package_id=package_id, base_branch=base_branch, reapply_templates_only=reapply_templates_only
+        provider_package_id=package_id,
+        base_branch=base_branch,
+        reapply_templates_only=reapply_templates_only,
+        only_min_version_update=only_min_version_update,
     )
     if not proceed:
-        get_console().print(
-            f"[warning]The provider {package_id} is not being released. Skipping the package.[/]"
-        )
+        if not only_min_version_update:
+            get_console().print(
+                f"[warning]The provider {package_id} is not being released. Skipping the package.[/]"
+            )
         raise PrepareReleaseDocsNoChangesException()
     if reapply_templates_only:
         get_console().print("[info]Only reapply templates, no changelog update[/]")
diff --git a/dev/breeze/src/airflow_breeze/utils/ci_group.py b/dev/breeze/src/airflow_breeze/utils/ci_group.py
index a3e6807..b8efb91 100644
--- a/dev/breeze/src/airflow_breeze/utils/ci_group.py
+++ b/dev/breeze/src/airflow_breeze/utils/ci_group.py
@@ -31,7 +31,12 @@
 
 
 @contextmanager
-def ci_group(title: str, message_type: MessageType | None = MessageType.INFO, output: Output | None = None):
+def ci_group(
+    title: str,
+    message_type: MessageType | None = MessageType.INFO,
+    output: Output | None = None,
+    skip_printing_title: bool = False,
+):
     """
     If used in GitHub Action, creates an expandable group in the GitHub Action log.
     Otherwise, display simple text groups.
@@ -44,19 +49,21 @@
         yield
         return
     if os.environ.get("GITHUB_ACTIONS", "false") != "true":
-        if message_type is not None:
-            get_console(output=output).print(f"\n[{message_type.value}]{title}\n")
-        else:
-            get_console(output=output).print(f"\n{title}\n")
+        if not skip_printing_title:
+            if message_type is not None:
+                get_console(output=output).print(f"\n[{message_type.value}]{title}\n")
+            else:
+                get_console(output=output).print(f"\n{title}\n")
         yield
         return
     _in_ci_group = True
-    if message_type is not None:
-        get_console().print(f"::group::[{message_type.value}]{title}[/]")
-    else:
-        get_console().print(f"::group::{title}")
-    try:
-        yield
-    finally:
-        get_console().print("::endgroup::")
-        _in_ci_group = False
+    if not skip_printing_title:
+        if message_type is not None:
+            get_console().print(f"::group::[{message_type.value}]{title}[/]")
+        else:
+            get_console().print(f"::group::{title}")
+        try:
+            yield
+        finally:
+            get_console().print("::endgroup::")
+            _in_ci_group = False
