diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index 5df7ea0..e93ebd4 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -68,6 +68,12 @@
         public void onDestroyed(Connection connection) {
             remove(connection);
         }
+
+        @Override
+        public void onConferenceStarted() {
+            Log.v(this, "onConferenceStarted");
+            recalculateConference();
+        }
     };
 
     /**
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 6198ce1..71e4cae 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -186,6 +186,11 @@
     private boolean mWasImsConnection;
 
     /**
+     * Tracks the multiparty state of the ImsCall so that changes in the bit state can be detected.
+     */
+    private boolean mIsMultiParty = false;
+
+    /**
      * Determines if the {@link TelephonyConnection} has local video capabilities.
      * This is used when {@link TelephonyConnection#updateConnectionCapabilities()}} is called,
      * ensuring the appropriate capabilities are set.  Since capabilities
@@ -483,6 +488,7 @@
         if (isImsConnection()) {
             mWasImsConnection = true;
         }
+        mIsMultiParty = mOriginalConnection.isMultiparty();
 
         fireOnOriginalConnectionConfigured();
         updateAddress();
@@ -633,6 +639,24 @@
         }
         updateConnectionCapabilities();
         updateAddress();
+        updateMultiparty();
+    }
+
+    /**
+     * Checks for changes to the multiparty bit.  If a conference has started, informs listeners.
+     */
+    private void updateMultiparty() {
+        if (mOriginalConnection == null) {
+            return;
+        }
+
+        if (mIsMultiParty != mOriginalConnection.isMultiparty()) {
+            mIsMultiParty = mOriginalConnection.isMultiparty();
+
+            if (mIsMultiParty) {
+                notifyConferenceStarted();
+            }
+        }
     }
 
     private void setActiveInternal() {
