diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index 3092a022038275981143377e2f1aaa12b42d357d..828d97ef5dc14621f09c807bece7d39c23a0e636 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -1250,7 +1250,7 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
 
     @Override
     public void goToContact(String accountId, Contact contact) {
-        startActivity(new Intent(Intent.ACTION_VIEW, android.net.Uri.withAppendedPath(android.net.Uri.withAppendedPath(ContentUriHandler.CONTACT_CONTENT_URI, accountId), contact.getPrimaryNumber()))
+        startActivity(new Intent(Intent.ACTION_VIEW, ConversationPath.toUri(accountId, contact.getUri()))
                 .setClass(requireContext(), ContactDetailsActivity.class));
     }
 
diff --git a/ring-android/libringclient/src/main/java/net/jami/call/CallPresenter.java b/ring-android/libringclient/src/main/java/net/jami/call/CallPresenter.java
index ddb94f4d034db0457b9e4d8ec36ecfcce01cdf06..42490c99895d782ae6a55247a280ccd18c2b0a42 100644
--- a/ring-android/libringclient/src/main/java/net/jami/call/CallPresenter.java
+++ b/ring-android/libringclient/src/main/java/net/jami/call/CallPresenter.java
@@ -717,9 +717,10 @@ public class CallPresenter extends RootPresenter<CallView> {
     }
 
     public void hangupParticipant(Conference.ParticipantInfo info) {
-        //mCallService.
         if (info.call != null)
             mCallService.hangUp(info.call.getDaemonIdString());
+        else
+            mCallService.hangupParticipant(mConference.getId(), info.contact.getPrimaryNumber());
     }
 
     public void muteParticipant(Conference.ParticipantInfo info, boolean mute) {
@@ -727,7 +728,8 @@ public class CallPresenter extends RootPresenter<CallView> {
     }
 
     public void openParticipantContact(Conference.ParticipantInfo info) {
-        getView().goToContact(mConference.getFirstCall().getAccount(), info.contact);
+        Call call = info.call == null ? mConference.getFirstCall() : info.call;
+        getView().goToContact(call.getAccount(), info.contact);
     }
 
     public void stopCapture() {
diff --git a/ring-android/libringclient/src/main/java/net/jami/services/CallService.java b/ring-android/libringclient/src/main/java/net/jami/services/CallService.java
index 92dd5ac045a8c04cf7b18aeef5658c8c9f87c955..875d0efb09851f2876b1d8de2c63eb865f525bf0 100644
--- a/ring-android/libringclient/src/main/java/net/jami/services/CallService.java
+++ b/ring-android/libringclient/src/main/java/net/jami/services/CallService.java
@@ -302,11 +302,18 @@ public class CallService {
 
     public void muteParticipant(String confId, String peerId, boolean mute) {
         mExecutor.execute(() -> {
-            Log.i(TAG, "mute() participant... " + peerId);
+            Log.i(TAG, "mute participant... " + peerId);
             JamiService.muteParticipant(confId, peerId, mute);
         });
     }
 
+    public void hangupParticipant(String confId, String peerId) {
+        mExecutor.execute(() -> {
+            Log.i(TAG, "hangup participant... " + peerId);
+            JamiService.hangupParticipant(confId, peerId);
+        });
+    }
+
     public void hold(final String callId) {
         mExecutor.execute(() -> {
             Log.i(TAG, "hold() running... " + callId);