diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 0eef378..00ce14d 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -237,13 +237,25 @@
     }
 
     void setCallService(CallServiceWrapper callService) {
+        setCallService(callService, null);
+    }
+
+    /**
+     * Changes the call service this call is associated with. If callToReplace is non-null then this
+     * call takes its place within the call service.
+     */
+    void setCallService(CallServiceWrapper callService, Call callToReplace) {
         Preconditions.checkNotNull(callService);
 
         clearCallService();
 
         callService.incrementAssociatedCallCount();
         mCallService = callService;
-        mCallService.addCall(this);
+        if (callToReplace == null) {
+            mCallService.addCall(this);
+        } else {
+            mCallService.replaceCall(this, callToReplace);
+        }
     }
 
     /**
diff --git a/src/com/android/telecomm/CallIdMapper.java b/src/com/android/telecomm/CallIdMapper.java
index aec3b5e..a5d70bf 100644
--- a/src/com/android/telecomm/CallIdMapper.java
+++ b/src/com/android/telecomm/CallIdMapper.java
@@ -30,6 +30,14 @@
         mCallIdPrefix = callIdPrefix + "@";
     }
 
+    void replaceCall(Call newCall, Call callToReplace) {
+        ThreadUtil.checkOnMainThread();
+
+        // Use the old call's ID for the new call.
+        String callId = getCallId(callToReplace);
+        mCalls.put(callId, newCall);
+    }
+
     void addCall(Call call) {
         ThreadUtil.checkOnMainThread();
         Preconditions.checkNotNull(call);
diff --git a/src/com/android/telecomm/CallServiceWrapper.java b/src/com/android/telecomm/CallServiceWrapper.java
index 007d35a..70f0ec2 100644
--- a/src/com/android/telecomm/CallServiceWrapper.java
+++ b/src/com/android/telecomm/CallServiceWrapper.java
@@ -28,6 +28,7 @@
 import com.android.internal.telecomm.ICallService;
 import com.android.internal.telecomm.ICallServiceAdapter;
 import com.android.internal.telecomm.ICallServiceProvider;
+import com.google.common.base.Preconditions;
 
 /**
  * Wrapper for {@link ICallService}s, handles binding to {@link ICallService} and keeps track of
@@ -253,6 +254,14 @@
         mCallIdMapper.addCall(call);
     }
 
+    /**
+     * Associates newCall with this call service by replacing callToReplace.
+     */
+    void replaceCall(Call newCall, Call callToReplace) {
+        Preconditions.checkState(callToReplace.getCallService() == this);
+        mCallIdMapper.replaceCall(newCall, callToReplace);
+    }
+
     void removeCall(Call call) {
         mAdapter.removePendingCall(call);
         mCallIdMapper.removeCall(call);
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index b8724e3..1411270 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -582,7 +582,7 @@
         originalCall.disconnect();
 
         // Synchronize.
-        originalCall.setCallService(handoffCall.getCallService());
+        originalCall.setCallService(handoffCall.getCallService(), handoffCall);
         setCallState(originalCall, handoffCall.getState());
 
         // Remove the transient handoff call object (don't disconnect because the call is still
@@ -606,6 +606,7 @@
                     handoffCall.setState(CallState.ABORTED);
                 } else {
                     handoffCall.disconnect();
+                    handoffCall.setDisconnectCause(DisconnectCause.ERROR_UNSPECIFIED, null);
                     handoffCall.setState(CallState.DISCONNECTED);
                 }
                 removeCall(handoffCall);
