diff --git a/perl/exit_strategy.pl b/perl/exit_strategy.pl
index 9bb680d16afd3243e0ae3dc182365a54ae1141e3..014a7e5f1c0cf27aaf7e99da12e7822ab58f5dc6 100644
--- a/perl/exit_strategy.pl
+++ b/perl/exit_strategy.pl
@@ -254,49 +254,57 @@ SQL_DELETE_PLAN
 #     $ret{"files"} = \@files;
 #     $ret{"dcrecords"} = \@dcrecords;
 ###############################################################################
-sub write_addsql ($dbh, $plans, $refhash) {
-  my $iefile = basename($refhash->{"filename"});
-  my ($ieid,$ieversion);
-  if ($iefile =~ m/^V(\d+)-(IE\d*)\.xml$/) {
-    $ieversion=$1; $ieid=$2;
-  } else {
-    die "Could not detect PID and Version from IEFile '$iefile'\n";
-  }
-  my $lza_id_kv = List::Util::first {
-    my ($dckey,$dcvalue) = @{$_};
-    ($dckey eq 'dc:identifier')
-        and (check_lzaid($dcvalue))
-  } @{$refhash->{"dcrecords"}};
-  my $lza_id = @{$lza_id_kv}[1];
-  if (! defined $lza_id) { $lza_id = "";}
-  # start SQL insert
-  eval {$plans->{aip}->execute($ieid, $lza_id, $ieversion)}  or die "sql problem detected with $ieid ($ieversion), plz check if there is a dublette dir, ", $dbh->errstr;
-  # FIXME if multiple locations exists
-
-  eval{$plans->{ie}->execute( $ieid, $ieversion, $iefile, $sourcetype)}  or die "sql problem detected with $ieid ($ieversion, $iefile, $sourcetype), ", $dbh->errstr;
-  foreach my $location (@{$refhash->{"files"}}) {
-    my $file = basename($location); # FIXME if multiple locations
-    eval {$plans->{file}->execute($ieid, $ieversion, $file)}  or die "sql problem detected with $ieid ($ieversion, $file), ", $dbh->errstr;
-    eval {$plans->{locat}->execute($ieid, $ieversion, $file, $location, $sourcetype)}  or die "sql problem detected with $ieid ($ieversion, $file, $location, $sourcetype), ", $dbh->errstr;
-  }
-  foreach my $dcpair   (@{$refhash->{"dcrecords"}}) {
-    my ($dckey,$dcvalue) = @{$dcpair};
-    # quote ' in dcvalue
-    $dcvalue=~tr/'/"/;
-    eval {$plans->{dc}->execute($ieid, $ieversion, $dckey, $dcvalue)}  or die "sql problem detected with $ieid ($ieversion, $dckey, $dcvalue), ", $dbh->errstr;
-  }
-  if ($refhash->{'purged'}) {
-    my @purged = @{$refhash->{'purged'}};
-    foreach my $purge (@purged) {
-      # TODO: call plan plans->{deleted}
-      my $state = $purge->{'state'};
-      my $reason = $purge->{'reason'};
-      my $date = $purge->{'date'};
-      my $authorized_by = $purge->{'authorized_by'};
-      eval {$plans->{deleted}->execute($ieid, $ieversion, $state, $reason, $date, $authorized_by)} or die "sql problem detected with $ieid ($ieversion, $state, $reason, $date, $authorized_by), ", $dbh->errstr;
+{
+  my $lza_id_counter = 0;
+  sub write_addsql($dbh, $plans, $refhash) {
+    my $iefile = basename($refhash->{"filename"});
+    my ($ieid, $ieversion);
+    if ($iefile =~ m/^V(\d+)-(IE\d*)\.xml$/) {
+      $ieversion = $1;
+      $ieid = $2;
+    }
+    else {
+      die "Could not detect PID and Version from IEFile '$iefile'\n";
     }
+    my $lza_id_kv = List::Util::first {
+      my ($dckey, $dcvalue) = @{$_};
+      ($dckey eq 'dc:identifier')
+          and (check_lzaid($dcvalue))
+    } @{$refhash->{"dcrecords"}};
+    my $lza_id = @{$lza_id_kv}[1];
+    if (!defined $lza_id) {
+      $lza_id = sprintf("SLUB:LZA:migration_from_rosetta:unknown_%05lu", $lza_id_counter++);
+      warn ("no lza id detected on $refhash->{filename}, using $lza_id now!");
+    }
+    # start SQL insert
+    eval {$plans->{aip}->execute($ieid, $lza_id, $ieversion)} or die "sql problem detected with $ieid ($ieversion), plz check if there is a dublette dir, ", $dbh->errstr;
+    # FIXME if multiple locations exists
+
+    eval {$plans->{ie}->execute($ieid, $ieversion, $iefile, $sourcetype)} or die "sql problem detected with $ieid ($ieversion, $iefile, $sourcetype), ", $dbh->errstr;
+    foreach my $location (@{$refhash->{"files"}}) {
+      my $file = basename($location); # FIXME if multiple locations
+      eval {$plans->{file}->execute($ieid, $ieversion, $file)} or die "sql problem detected with $ieid ($ieversion, $file), ", $dbh->errstr;
+      eval {$plans->{locat}->execute($ieid, $ieversion, $file, $location, $sourcetype)} or die "sql problem detected with $ieid ($ieversion, $file, $location, $sourcetype), ", $dbh->errstr;
+    }
+    foreach my $dcpair (@{$refhash->{"dcrecords"}}) {
+      my ($dckey, $dcvalue) = @{$dcpair};
+      # quote ' in dcvalue
+      $dcvalue =~ tr/'/"/;
+      eval {$plans->{dc}->execute($ieid, $ieversion, $dckey, $dcvalue)} or die "sql problem detected with $ieid ($ieversion, $dckey, $dcvalue), ", $dbh->errstr;
+    }
+    if ($refhash->{'purged'}) {
+      my @purged = @{$refhash->{'purged'}};
+      foreach my $purge (@purged) {
+        # TODO: call plan plans->{deleted}
+        my $state = $purge->{'state'};
+        my $reason = $purge->{'reason'};
+        my $date = $purge->{'date'};
+        my $authorized_by = $purge->{'authorized_by'};
+        eval {$plans->{deleted}->execute($ieid, $ieversion, $state, $reason, $date, $authorized_by)} or die "sql problem detected with $ieid ($ieversion, $state, $reason, $date, $authorized_by), ", $dbh->errstr;
+      }
+    }
+    return 1;
   }
-  return 1;
 }