diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index b0881c9..187ded9 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -125,6 +125,11 @@
   @Override
   public boolean isVoicemailTranscriptionAvailable(
       Context context, PhoneAccountHandle phoneAccountHandle) {
+    if (phoneAccountHandle == null) {
+      LogUtil.i(
+          "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "phone account handle is null");
+    }
+
     if (!BuildCompat.isAtLeastO()) {
       LogUtil.i(
           "VoicemailClientImpl.isVoicemailTranscriptionAvailable", "not running on O or later");
@@ -198,6 +203,9 @@
         "transcription must be available before enabling/disabling it");
     VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled(
         context, phoneAccountHandle, enabled);
+    if (enabled) {
+      TranscriptionBackfillService.scheduleTask(context, phoneAccountHandle);
+    }
   }
 
   @Override
diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
index e7248c4..3acf60d 100644
--- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
+++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
@@ -23,9 +23,11 @@
 import android.support.annotation.VisibleForTesting;
 import android.telecom.PhoneAccountHandle;
 import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.common.database.Selection;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
 import com.android.voicemail.impl.VisualVoicemailPreferences;
@@ -130,6 +132,7 @@
 
   public static boolean isEnabled(Context context, PhoneAccountHandle phoneAccount) {
     if (phoneAccount == null) {
+      LogUtil.i("VisualVoicemailSettingsUtil.isEnabled", "phone account is null");
       return false;
     }
 
@@ -213,9 +216,10 @@
 
     @Override
     public Void doInBackground(Void unused) {
-
       ContentValues contentValues = new ContentValues();
-      contentValues.put(Voicemails.TRANSCRIPTION, "");
+      contentValues.putNull(Voicemails.TRANSCRIPTION);
+      contentValues.put(
+          VoicemailCompat.TRANSCRIPTION_STATE, VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
 
       Selection selection =
           Selection.builder()
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
index 8161e71..8fc40ee 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionBackfillService.java
@@ -22,6 +22,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Bundle;
 import android.support.annotation.WorkerThread;
 import android.support.v4.app.JobIntentService;
 import android.support.v4.os.BuildCompat;
@@ -66,6 +67,10 @@
   protected void onHandleWork(Intent intent) {
     LogUtil.enterBlock("TranscriptionBackfillService.onHandleWork");
 
+    Bundle bundle = intent.getExtras();
+    final PhoneAccountHandle account =
+        (PhoneAccountHandle) bundle.get(TranscriptionService.EXTRA_ACCOUNT_HANDLE);
+
     TranscriptionDbHelper dbHelper = new TranscriptionDbHelper(this);
     List<Uri> untranscribed = dbHelper.getUntranscribedVoicemails();
     LogUtil.i(
@@ -75,7 +80,7 @@
     for (Uri uri : untranscribed) {
       ThreadUtil.postOnUiThread(
           () -> {
-            TranscriptionService.scheduleNewVoicemailTranscriptionJob(this, uri, null, false);
+            TranscriptionService.scheduleNewVoicemailTranscriptionJob(this, uri, account, false);
           });
     }
   }
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
index 24c07cc..6ffb848 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionDbHelper.java
@@ -87,7 +87,14 @@
     Assert.isWorkerThread();
     List<Uri> untranscribed = new ArrayList<>();
     String whereClause =
-        Voicemails.TRANSCRIPTION + " is NULL AND " + VoicemailCompat.TRANSCRIPTION_STATE + "=?";
+        "("
+            + Voicemails.TRANSCRIPTION
+            + " is NULL OR "
+            + Voicemails.TRANSCRIPTION
+            + " = '')"
+            + " AND "
+            + VoicemailCompat.TRANSCRIPTION_STATE
+            + "=?";
     String[] whereArgs = {String.valueOf(VoicemailCompat.TRANSCRIPTION_NOT_STARTED)};
     try (Cursor cursor = contentResolver.query(uri, PROJECTION, whereClause, whereArgs, null)) {
       if (cursor == null) {
