Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/ha/synconfig/__init__.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/ha/synconfig/__init__.py	(revision 39824)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/ha/synconfig/__init__.py	(working copy)
@@ -116,7 +116,7 @@
         confirm_msg = ""
         alert_msg = ""
         process_title = ""
-        forever = False
+        forever = True
         related = 'peer_node'
         config_change = False
         instance_mul = '0..1'
@@ -245,12 +245,28 @@
         def _perform_SynchronizeTO(self, options):
             pk_list = options['__asso_pk_list']
             self.cli.set_config()
-            if pk_list:
-                peer_name = pk_list[0]['name']
-                result = self.cli.cmd('synconfig to "%s"' %(peer_name), timeout=900)
-            else:
-                result = self.cli.cmd('synconfig to all', timeout=900)
-            return result
+            
+            # Use RegexParser to monitor completion message
+            completion_parser = RegexParser('sync config completed, writing to the current config', 
+                                          MATCHONE, match_exception=CLICmdNormal, exclusive=True)
+            blank_parser = BlankParser(nonblank_exception=CLICmdError, supplement=True)
+            
+            try:
+                if pk_list:
+                    peer_name = pk_list[0]['name']
+                    result = self.cli.cmd('synconfig to "%s"' %(peer_name), 
+                                        completion_parser, blank_parser, timeout=900)
+                else:
+                    result = self.cli.cmd('synconfig to all', 
+                                        completion_parser, blank_parser, timeout=900)
+                return result
+            except CLICmdNormal as e:
+                # Return special marker when completion message is detected
+                error_msg = str(e)
+                if "sync config completed" in error_msg:
+                    return "__SYNC_COMPLETED__:Configuration synchronization completed successfully."
+                else:
+                    return "Synchronization process may still be running. Please use 'View Results' to verify the sync status."
 
         def _perform_SynchronizeFrom(self, options):
             pk_list = options['__asso_pk_list']
Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/media/js/coffee/hive.coffee
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/media/js/coffee/hive.coffee	(revision 39824)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/media/js/coffee/hive.coffee	(working copy)
@@ -737,6 +737,19 @@
         {'action':action.name, 'options':JSON.stringify(post_data['options']),'csrfmiddlewaretoken':post_data['csrf_token']}
         (data)->
             if action.forever
+                # Check if the response contains sync completion marker
+                completion_msg = null
+                if data[1] && typeof data[1] == 'string' && data[1].indexOf('__SYNC_COMPLETED__:') == 0
+                    completion_msg = data[1]
+                else if data[1] && data[1]['msg'] && data[1]['msg'].indexOf('__SYNC_COMPLETED__:') == 0
+                    completion_msg = data[1]['msg']
+                
+                if completion_msg
+                    dlg.hide()
+                    # Extract the actual message without the marker
+                    actual_msg = completion_msg.substring(19)  # Remove "__SYNC_COMPLETED__:" prefix
+                    $HIVE.alert('info', action.verbose_name + ' ' + gettext('Info'), actual_msg)
+                    call_cb(data)
                 return false
             dlg.hide()
             if data[0] == true
