diff -u b/src/Plugin/tmgmt/Translator/SmartlingTranslator.php b/src/Plugin/tmgmt/Translator/SmartlingTranslator.php
--- b/src/Plugin/tmgmt/Translator/SmartlingTranslator.php
+++ b/src/Plugin/tmgmt/Translator/SmartlingTranslator.php
@@ -266,7 +266,7 @@
   public function getFileName(JobInterface $job) {
     try {
       $filename = $job->get('job_file_name');
-      $filename = $filename->getValue()[0]['value'];
+      $filename = !empty($filename->getValue()) ? $filename->getValue()[0]['value'] : '';
     } catch (\Exception $e) {
       $filename = '';
     }
diff -u b/tmgmt_smartling.install b/tmgmt_smartling.install
--- b/tmgmt_smartling.install
+++ b/tmgmt_smartling.install
@@ -30,41 +30,9 @@
 
-  // Select all existing jobs.
-  $query = Drupal::database()->select('tmgmt_job', 'job');
-  $query->fields('job', [
-    'tjid',
-    'source_language',
-    'target_language',
-  ]);
-  $jobs = $query->execute()->fetchAll();
-
-  // We don't want to execute as many update queries as amount of existing
-  // jobs. So we just generate one update query with
-  // CASE .. WHEN .. THEN .. ELSE .. END syntax and execute one update query.
-  // @see https://dev.mysql.com/doc/refman/5.7/en/case.html.
-  $update_values = [];
-  $new_column_name = 'job_file_name';
-
-  foreach ($jobs as $job) {
-    $update_values[$job->tjid] = [
-      $new_column_name => "JobID{$job->tjid}_{$job->source_language}_{$job->target_language}.xlf",
-    ];
-  }
-
-  $update_query = "UPDATE `tmgmt_job` SET ";
-  $columns = [
-    $new_column_name => '`job_file_name` = CASE ',
-  ];
-
-  foreach ($update_values as $id => $values) {
-    $columns[$new_column_name] .= "WHEN `tjid`='$id' THEN '" . $values[$new_column_name] . "' ";
-  }
-
-  foreach ($columns as $column_name => $query_part) {
-    $columns[$column_name] .= " ELSE `$column_name` END ";
-  }
-
-  $where = " WHERE `tjid` IN (" . implode(", ", array_keys($update_values)) . ")";
-  $update_query .= implode(', ', $columns) . $where;
-
-  Drupal::database()->query($update_query);
+  Drupal::database()->update('tmgmt_job')
+    ->expression('job_file_name', 'CONCAT(:job, tmgmt_job.tjid, :underscore, tmgmt_job.source_language, :underscore, tmgmt_job.target_language, :extension)', [
+      ':job' => 'JobID',
+      ':underscore' => '_',
+      ':extension' => '.xlf',
+    ])
+    ->execute();
 }
diff -u b/tmgmt_smartling.module b/tmgmt_smartling.module
--- b/tmgmt_smartling.module
+++ b/tmgmt_smartling.module
@@ -158,7 +158,7 @@
  * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
  */
 function tmgmt_smartling_entity_base_field_info_alter(&$fields, EntityTypeInterface $entity_type) {
-  if ($entity_type->id() === 'tmgmt_job') {
+  if ($entity_type->id() === 'tmgmt_job' && empty($fields['job_file_name'])) {
     $fields['job_file_name'] = BaseFieldDefinition::create('string')
       ->setLabel(t('Generated file name'))
       ->setSetting('max_length', 1024)
