diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c
index 7e69cabc3bb514c2a4bbd528752779117caa30ed..5e65e88c0b166e24dbca9ea8e128eb067a58aaa6 100644
--- a/sflphone-client-gnome/src/actions.c
+++ b/sflphone-client-gnome/src/actions.c
@@ -837,12 +837,18 @@ sflphone_get_current_codec_name()
 }
 
     void
-sflphone_detach_participant()
+sflphone_detach_participant(const gchar* callID)
 {
     DEBUG("sflphone detach participant from conference");
 
-    callable_obj_t * selectedCall = calltab_get_selected_call(current_calls);
-    dbus_detach_participant(selectedCall);
+    if(callID == NULL) {
+        callable_obj_t * selectedCall = calltab_get_selected_call(current_calls);
+        dbus_detach_participant(selectedCall->_callID);
+    }
+    else {
+	dbus_detach_participant(callID);	
+    }
+     
 }
 
     void
diff --git a/sflphone-client-gnome/src/actions.h b/sflphone-client-gnome/src/actions.h
index 975aead4c2640429a9ef747c8d7087b30302c631..e984ac68dd1f9b9f3d22d31753705b6c08b6110d 100644
--- a/sflphone-client-gnome/src/actions.h
+++ b/sflphone-client-gnome/src/actions.h
@@ -186,4 +186,6 @@ void sflphone_join_participant(const gchar* sel_callID, const gchar* drag_callID
 
 void sflphone_add_participant(const gchar* callID, const gchar* confID);
 
+void sflphone_detach_participant(const gchar* callID);
+
 #endif
diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c
index db5b7aa20c86d62c93980edc5a5f71737c778404..2cf12eaaf0b6c6c418230bd10104ed65aa364ba8 100644
--- a/sflphone-client-gnome/src/contacts/calltree.c
+++ b/sflphone-client-gnome/src/contacts/calltree.c
@@ -926,6 +926,7 @@ static void drag_end_cb(GtkWidget * widget, GdkDragContext * context, gpointer d
 	    else if(selected_type == A_CONFERENCE && dragged_type == A_CALL)
 	    {
 		// TODO: dragged a conference on a single call
+		sflphone_add_participant(dragged_call_id, selected_call_id);
 		
 	    }
 	    else if(selected_type == A_CONFERENCE && dragged_type == A_CONFERENCE)
diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c
index f0c939b560378415432387f8730a6ce73e0716b8..fce7413f832ff3301a03dee02d851b7c86a2918d 100644
--- a/sflphone-client-gnome/src/dbus/dbus.c
+++ b/sflphone-client-gnome/src/dbus/dbus.c
@@ -1339,15 +1339,15 @@ dbus_add_participant(const gchar* callID, const gchar* confID)
 
 
     void
-dbus_detach_participant(const callable_obj_t * c)
+dbus_detach_participant(const gchar* callID)
 {
 
-    DEBUG("dbus_detach_participant %s\n", c->_callID);
+    DEBUG("dbus_detach_participant %s\n", callID);
 
     GError* error = NULL;
     org_sflphone_SFLphone_CallManager_detach_participant(
             callManagerProxy,
-            c->_callID,
+            callID,
             &error);
     if(error)
     {
diff --git a/sflphone-client-gnome/src/toolbar.c b/sflphone-client-gnome/src/toolbar.c
index 862c8ef04be2e2f1d6d807f7f6b9ea32dfde29da..683018ca7eac0b3dae9b335db05dd736a3c68a7e 100644
--- a/sflphone-client-gnome/src/toolbar.c
+++ b/sflphone-client-gnome/src/toolbar.c
@@ -32,7 +32,7 @@ is_inserted( GtkWidget* button )
     static void
 detach_button( GtkWidget *widget UNUSED, gpointer   data UNUSED)
 {
-    sflphone_detach_participant();
+    sflphone_detach_participant(NULL);
 }
 
 /**