diff --git a/java/com/android/contacts/common/compat/DirectoryCompat.java b/java/com/android/contacts/common/compat/DirectoryCompat.java
index 85f4a42..e670876 100644
--- a/java/com/android/contacts/common/compat/DirectoryCompat.java
+++ b/java/com/android/contacts/common/compat/DirectoryCompat.java
@@ -48,4 +48,8 @@
   public static boolean isEnterpriseDirectoryId(long directoryId) {
     return VERSION.SDK_INT >= VERSION_CODES.N && Directory.isEnterpriseDirectoryId(directoryId);
   }
+
+  public static boolean isOnlyEnterpriseDirectoryId(long directoryId) {
+    return isEnterpriseDirectoryId(directoryId) && !isRemoteDirectoryId(directoryId);
+  }
 }
diff --git a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
index 407207a..9be7fa0 100644
--- a/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
+++ b/java/com/android/dialer/searchfragment/common/res/layout/search_contact_row.xml
@@ -65,4 +65,15 @@
       android:tint="@color/dialer_secondary_text_color"
       android:visibility="gone"
       android:scaleType="center"/>
+
+  <ImageView
+      android:id="@+id/work_icon"
+      android:layout_width="@dimen/search_row_height"
+      android:layout_height="@dimen/search_row_height"
+      android:layout_alignParentEnd="true"
+      android:layout_centerVertical="true"
+      android:padding="@dimen/call_to_action_padding"
+      android:src="@drawable/ic_work_profile"
+      android:scaleType="centerInside"
+      android:visibility="gone"/>
 </RelativeLayout>
\ No newline at end of file
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
index 9d36900..4be96fe 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
@@ -26,8 +26,10 @@
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
+import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.dialer.callintent.CallInitiationType;
 import com.android.dialer.callintent.CallIntentBuilder;
 import com.android.dialer.contactphoto.ContactPhotoManager;
@@ -46,6 +48,7 @@
   private final TextView nameView;
   private final TextView numberView;
   private final QuickContactBadge photo;
+  private final ImageView workBadge;
 
   private String number;
 
@@ -55,6 +58,7 @@
     photo = view.findViewById(R.id.photo);
     nameView = view.findViewById(R.id.primary);
     numberView = view.findViewById(R.id.secondary);
+    workBadge = view.findViewById(R.id.work_icon);
     context = view.getContext();
   }
 
@@ -74,6 +78,10 @@
 
     nameView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name, context));
     numberView.setText(QueryBoldingUtil.getNameWithQueryBolded(query, secondaryInfo, context));
+    workBadge.setVisibility(
+        DirectoryCompat.isOnlyEnterpriseDirectoryId(cursor.getDirectoryId())
+            ? View.VISIBLE
+            : View.GONE);
 
     if (shouldShowPhoto(cursor)) {
       nameView.setVisibility(View.VISIBLE);
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
index 9510443..653c670 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
@@ -22,6 +22,7 @@
 import android.database.MergeCursor;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.dialer.common.Assert;
 import com.android.dialer.searchfragment.common.SearchCursor;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader;
@@ -101,7 +102,12 @@
 
   private static MatrixCursor createHeaderCursor(Context context, String name, long id) {
     MatrixCursor headerCursor = new MatrixCursor(PROJECTION, 1);
-    headerCursor.addRow(new Object[] {context.getString(R.string.directory, name), id});
+    if (DirectoryCompat.isOnlyEnterpriseDirectoryId(id)) {
+      headerCursor.addRow(
+          new Object[] {context.getString(R.string.directory_search_label_work), id});
+    } else {
+      headerCursor.addRow(new Object[] {context.getString(R.string.directory, name), id});
+    }
     return headerCursor;
   }
 
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
index 9feeb7e..cf495e4 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
@@ -27,6 +27,7 @@
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.support.annotation.NonNull;
 import android.support.annotation.VisibleForTesting;
+import com.android.contacts.common.compat.DirectoryCompat;
 import com.android.dialer.searchfragment.common.Projections;
 import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
 import java.util.ArrayList;
@@ -71,7 +72,14 @@
       Directory directory = directories.get(i);
 
       // Filter out local directories
-      if (!isRemoteDirectory(directory.getId())) {
+      if (!DirectoryCompat.isRemoteDirectoryId(directory.getId())
+          && !DirectoryCompat.isEnterpriseDirectoryId(directory.getId())) {
+        cursors[i] = null;
+        continue;
+      }
+
+      // Filter out invisible directories
+      if (DirectoryCompat.isInvisibleDirectory(directory.getId())) {
         cursors[i] = null;
         continue;
       }
@@ -93,17 +101,6 @@
     return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
   }
 
-  private static boolean isRemoteDirectory(long directoryId) {
-    return VERSION.SDK_INT >= VERSION_CODES.N
-        ? ContactsContract.Directory.isRemoteDirectoryId(directoryId)
-        : (directoryId != ContactsContract.Directory.DEFAULT
-            && directoryId != ContactsContract.Directory.LOCAL_INVISIBLE
-            // Directory.ENTERPRISE_DEFAULT is the default work profile directory for locally stored
-            // contacts
-            && directoryId != ContactsContract.Directory.ENTERPRISE_DEFAULT
-            && directoryId != ContactsContract.Directory.ENTERPRISE_LOCAL_INVISIBLE);
-  }
-
   private MatrixCursor createMatrixCursorFilteringNullNumbers(Cursor cursor) {
     if (cursor == null) {
       return null;
