diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp
index 9db64e3f56e0d2f2ca0ed9270f96219372dc9e35..c6e0fa8369e097c7611dc6853ce4f9d8c165d111 100644
--- a/sflphone-common/src/managerimpl.cpp
+++ b/sflphone-common/src/managerimpl.cpp
@@ -1156,15 +1156,19 @@ void ManagerImpl::detachParticipant (const CallID& call_id,
 				onHoldCall(call_id);
 
 				removeParticipant(call_id);
-
 				processRemainingParticipant(current_call_id, conf);
+
+				_dbus->getCallManager()->conferenceChanged(conf->getConfID(),
+				conf->getStateStr());
 			}
-		} else {
+		} 
+		else {
 
 			_debug ("Manager: Call is not conferencing, cannot detach");
 
 		}
-	} else {
+	} 
+	else {
 		_debug ("Manager: Unbind main participant from all");
 		_audiodriver->getMainBuffer()->unBindAll(default_id);
 
@@ -1211,9 +1215,6 @@ void ManagerImpl::removeParticipant (const CallID& call_id) {
 		conf->remove(call_id);
 		call->setConfId("");
 
-		_dbus->getCallManager()->conferenceChanged(conf->getConfID(),
-		 					   conf->getStateStr());	
-
 	}
 
 	if (_audiodriver)
@@ -1648,8 +1649,8 @@ void ManagerImpl::peerHungupCall (const CallID& call_id) {
 		if (conf != NULL) {
 
 			removeParticipant(call_id);
-
 			processRemainingParticipant(current_call_id, conf);
+
 		}
 	} else {
 		if (isCurrentCall(call_id)) {