diff --git a/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtils.java b/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtils.java
index 1ca4278..d3e8fa7 100644
--- a/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtils.java
+++ b/src/com/android/settings/biometrics/combination/CombinedBiometricStatusUtils.java
@@ -20,6 +20,7 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
+import android.os.UserManager;
 
 import androidx.annotation.Nullable;
 
@@ -87,6 +88,18 @@
     }
 
     /**
+     * Returns the title of combined biometric settings entity.
+     */
+    public String getTitle() {
+        UserManager userManager = mContext.getSystemService(UserManager.class);
+        if (userManager != null && userManager.isProfile()) {
+            return mContext.getString(R.string.security_settings_work_biometric_preference_title);
+        } else {
+            return mContext.getString(R.string.security_settings_biometric_preference_title);
+        }
+    }
+
+    /**
      * Returns the summary of combined biometric settings entity.
      */
     public String getSummary() {
diff --git a/src/com/android/settings/biometrics/face/FaceStatusUtils.java b/src/com/android/settings/biometrics/face/FaceStatusUtils.java
index 80ffb03..7c075cc 100644
--- a/src/com/android/settings/biometrics/face/FaceStatusUtils.java
+++ b/src/com/android/settings/biometrics/face/FaceStatusUtils.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.face.FaceManager;
+import android.os.UserManager;
 
 import com.android.settings.R;
 import com.android.settings.Settings;
@@ -59,6 +60,18 @@
     }
 
     /**
+     * Returns the title of face settings entity.
+     */
+    public String getTitle() {
+        UserManager userManager = mContext.getSystemService(UserManager.class);
+        if (userManager != null && userManager.isProfile()) {
+            return mContext.getString(R.string.security_settings_face_profile_preference_title);
+        } else {
+            return mContext.getString(R.string.security_settings_face_preference_title);
+        }
+    }
+
+    /**
      * Returns the summary of face settings entity.
      */
     public String getSummary() {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
index bb68994..1005e3f 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintStatusUtils.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.fingerprint.FingerprintManager;
+import android.os.UserManager;
 
 import com.android.settings.R;
 import com.android.settings.Utils;
@@ -59,6 +60,17 @@
         return ParentalControlsUtils.parentConsentRequired(
                 mContext, BiometricAuthenticator.TYPE_FINGERPRINT);
     }
+    /**
+     * Returns the title of fingerprint settings entity.
+     */
+    public String getTitle() {
+        UserManager userManager = mContext.getSystemService(UserManager.class);
+        if (userManager != null && userManager.isProfile()) {
+            return mContext.getString(R.string.security_settings_work_fingerprint_preference_title);
+        } else {
+            return mContext.getString(R.string.security_settings_fingerprint_preference_title);
+        }
+    }
 
     /**
      * Returns the summary of fingerprint settings entity.
diff --git a/src/com/android/settings/safetycenter/BiometricsSafetySource.java b/src/com/android/settings/safetycenter/BiometricsSafetySource.java
index d3e3189..ac486d7 100644
--- a/src/com/android/settings/safetycenter/BiometricsSafetySource.java
+++ b/src/com/android/settings/safetycenter/BiometricsSafetySource.java
@@ -27,7 +27,6 @@
 import android.safetycenter.SafetySourceData;
 import android.safetycenter.SafetySourceStatus;
 
-import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.biometrics.BiometricNavigationUtils;
 import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils;
@@ -63,7 +62,7 @@
             final RestrictedLockUtils.EnforcedAdmin disablingAdmin =
                     combinedBiometricStatusUtils.getDisablingAdmin();
             setBiometricSafetySourceData(context,
-                    context.getString(R.string.security_settings_biometric_preference_title),
+                    combinedBiometricStatusUtils.getTitle(),
                     combinedBiometricStatusUtils.getSummary(),
                     createPendingIntent(context,
                             biometricNavigationUtils.getBiometricSettingsIntent(context,
@@ -83,7 +82,7 @@
             final RestrictedLockUtils.EnforcedAdmin disablingAdmin =
                     faceStatusUtils.getDisablingAdmin();
             setBiometricSafetySourceData(context,
-                    context.getString(R.string.security_settings_face_preference_title),
+                    faceStatusUtils.getTitle(),
                     faceStatusUtils.getSummary(),
                     createPendingIntent(context,
                             biometricNavigationUtils.getBiometricSettingsIntent(context,
@@ -105,7 +104,7 @@
             final RestrictedLockUtils.EnforcedAdmin disablingAdmin =
                     fingerprintStatusUtils.getDisablingAdmin();
             setBiometricSafetySourceData(context,
-                    context.getString(R.string.security_settings_fingerprint_preference_title),
+                    fingerprintStatusUtils.getTitle(),
                     fingerprintStatusUtils.getSummary(),
                     createPendingIntent(context,
                             biometricNavigationUtils.getBiometricSettingsIntent(context,
diff --git a/src/com/android/settings/safetycenter/LockScreenSafetySource.java b/src/com/android/settings/safetycenter/LockScreenSafetySource.java
index ed3ebc0..de20e24 100644
--- a/src/com/android/settings/safetycenter/LockScreenSafetySource.java
+++ b/src/com/android/settings/safetycenter/LockScreenSafetySource.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.safetycenter.SafetyEvent;
 import android.safetycenter.SafetySourceData;
 import android.safetycenter.SafetySourceIssue;
@@ -56,6 +57,11 @@
             return;
         }
 
+        UserManager userManager = context.getSystemService(UserManager.class);
+        if (userManager != null && userManager.isProfile()) {
+            return; // LockScreen source only supports primary profile.
+        }
+
         if (!screenLockPreferenceDetailsUtils.isAvailable()) {
             return;
         }
