diff --git a/res/menu/activity_main_drawer.xml b/res/menu/activity_main_drawer.xml
index 4082f5f..75deb8b 100644
--- a/res/menu/activity_main_drawer.xml
+++ b/res/menu/activity_main_drawer.xml
@@ -27,6 +27,10 @@
             android:id="@+id/nav_assistant"
             android:icon="@drawable/ic_assistant"
             android:title="@string/menu_assistant"/>
+        <item
+            android:id="@+id/nav_find_duplicates"
+            android:icon="@drawable/ic_menu_duplicates"
+            android:title="@string/menu_duplicates"/>
     </group>
 
     <group android:id="@+id/groups">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e5d6413..d170127 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -902,6 +902,9 @@
     <!-- The menu item to open the Google contacts assistant. [CHAR LIMIT=20]-->
     <string name="menu_assistant">Assistant</string>
 
+    <!-- The menu item to open the link/merge duplicates activity. [CHAR LIMIT=20]-->
+    <string name="menu_duplicates">Duplicates</string>
+
     <!-- Open drawer content descriptions [CHAR LIMIT=40] -->
     <string name="navigation_drawer_open">Open navigation drawer</string>
 
diff --git a/src-bind/com/android/contactsbind/ObjectFactory.java b/src-bind/com/android/contactsbind/ObjectFactory.java
index e336e4f..c9539ee 100644
--- a/src-bind/com/android/contactsbind/ObjectFactory.java
+++ b/src-bind/com/android/contactsbind/ObjectFactory.java
@@ -42,7 +42,11 @@
         return new DeviceLocalAccountTypeFactory.Default(context);
     }
 
-    public static Fragment getAssistantFragment() {
+    public static Fragment getAssistantFragment(String tag) {
+        return null;
+    }
+
+    public static Fragment getDuplicatesUtilFragment() {
         return null;
     }
 
diff --git a/src/com/android/contacts/ContactsDrawerActivity.java b/src/com/android/contacts/ContactsDrawerActivity.java
index 68b9884..0892baf 100644
--- a/src/com/android/contacts/ContactsDrawerActivity.java
+++ b/src/com/android/contacts/ContactsDrawerActivity.java
@@ -44,6 +44,7 @@
 
 import com.android.contacts.activities.ActionBarAdapter;
 import com.android.contacts.common.ContactsUtils;
+import com.android.contacts.common.Experiments;
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.common.list.AccountFilterActivity;
 import com.android.contacts.common.list.ContactListFilter;
@@ -74,6 +75,7 @@
 import com.android.contacts.util.SharedPreferenceUtil;
 import com.android.contactsbind.HelpUtils;
 import com.android.contactsbind.ObjectFactory;
+import com.android.contactsbind.experiments.Flags;
 
 import java.util.HashMap;
 import java.util.Iterator;
@@ -272,11 +274,21 @@
     private void setUpMenu() {
         final Menu menu = mNavigationView.getMenu();
 
-        if (ObjectFactory.getAssistantFragment() == null) {
+        if (ObjectFactory.getDuplicatesUtilFragment() == null) {
             menu.removeItem(R.id.nav_assistant);
+            menu.removeItem(R.id.nav_find_duplicates);
         } else {
-            final MenuItem assistantMenu = menu.findItem(R.id.nav_assistant);
-            mIdMenuMap.put(R.id.nav_assistant, assistantMenu);
+            int id;
+            if (Flags.getInstance(this).getBoolean(Experiments.ASSISTANT)) {
+                id = R.id.nav_assistant;
+                menu.removeItem(R.id.nav_find_duplicates);
+            } else {
+                id = R.id.nav_find_duplicates;
+                menu.removeItem(R.id.nav_assistant);
+            }
+
+            final MenuItem assistantMenu = menu.findItem(id);
+            mIdMenuMap.put(id, assistantMenu);
             if (isAssistantView()) {
                 updateMenuSelection(assistantMenu);
             }
@@ -591,7 +603,7 @@
                     HelpUtils.launchHelpAndFeedbackForMainScreen(ContactsDrawerActivity.this);
                 } else if (id == R.id.nav_all_contacts) {
                     switchToAllContacts();
-                } else if (id == R.id.nav_assistant) {
+                } else if (id == R.id.nav_assistant || id == R.id.nav_find_duplicates) {
                     if (!isAssistantView()) {
                         launchAssistant();
                         updateMenuSelection(item);
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 5621c1b..9326b0d 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -790,13 +790,26 @@
             transaction.replace(
                     R.id.contacts_list_container, mMembersFragment, TAG_GROUP_VIEW);
         } else if(isAssistantView()) {
-            Fragment assistantFragment = fragmentManager.findFragmentByTag(TAG_ASSISTANT);
-            if (assistantFragment == null) {
-                assistantFragment = ObjectFactory.getAssistantFragment();
+            String fragmentTag;
+            if (Flags.getInstance(this).getBoolean(Experiments.ASSISTANT)) {
+                fragmentTag = TAG_ASSISTANT;
+            } else {
+                fragmentTag = TAG_DUPLICATES;
             }
-            if (assistantFragment != null) {
-                transaction.replace(
-                        R.id.contacts_list_container, assistantFragment, TAG_ASSISTANT);
+
+            Fragment uiFragment = fragmentManager.findFragmentByTag(fragmentTag);
+            if (uiFragment == null) {
+                uiFragment = ObjectFactory.getAssistantFragment(fragmentTag);
+            }
+            transaction.replace(R.id.contacts_list_container, uiFragment, fragmentTag);
+
+            Fragment duplicatesUtilFragment =
+                    fragmentManager.findFragmentByTag(TAG_DUPLICATES_UTIL);
+            if (duplicatesUtilFragment == null) {
+                duplicatesUtilFragment = ObjectFactory.getDuplicatesUtilFragment();
+            }
+            if (!duplicatesUtilFragment.isAdded()) {
+                transaction.add(duplicatesUtilFragment, TAG_DUPLICATES_UTIL);
             }
             resetToolBarStatusBarColor();
         }
diff --git a/src/com/android/contacts/common/Experiments.java b/src/com/android/contacts/common/Experiments.java
index 4487b45..df709b3 100644
--- a/src/com/android/contacts/common/Experiments.java
+++ b/src/com/android/contacts/common/Experiments.java
@@ -21,6 +21,11 @@
 public final class Experiments {
 
     /**
+     * Experiment to enable assistant in left navigation drawer.
+     */
+    public static final String ASSISTANT = "Assistant__enable_assistant";
+
+    /**
      * Whether to open contact sheet (aka smart profile) instead of our own QuickContact.
      */
     public static final String CONTACT_SHEET = "QuickContact__contact_sheet";
