diff --git a/perl/exit_strategy.pl b/perl/exit_strategy.pl
index 966f5832a3da1cc5ceaf7cadf8fe301cb7d02f75..573683d52f30ac511a60fc1aa543068b4fd80052 100644
--- a/perl/exit_strategy.pl
+++ b/perl/exit_strategy.pl
@@ -453,11 +453,11 @@ sub check_if_db_conform ($string, $filename) {
   my $str_repid_old = "/mets:mets/mets:amdSec[starts-with(\@ID, \'REP\') and $str_local_reps]/\@ID";
   my $compiled_xpath_repid_old = XML::LibXML::XPathExpression->new($str_repid_old);
   #  only event 272 or 274 should be used, next line uses a multiple-predicate hack for XPATH 1.0
-  my $xpath_if_purged_expr = 'mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. != 273][. <= 274]]/';
-  my $compiled_xpath_ifpurged_event = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="eventDescription"]/text()');
-  my $compiled_xpath_purged_event_date = XML::LibXML::XPathExpression->new($xpath_if_purged_expr .'dnx:key[@id="eventDateTime"]/text()');
-  my $compiled_xpath_purged_event_authorized_by = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="linkingAgentIdentifierValue1"]/text()');
-  my $compiled_xpath_purged_event_reason = XML::LibXML::XPathExpression->new($xpath_if_purged_expr . 'dnx:key[@id="eventOutcomeDetail1"]/text()');
+  my $xpath_if_purged_expr = 'mets:digiprovMD[@ID="ie-amd-digiprov"]/mets:mdWrap/mets:xmlData/dnx:dnx/dnx:section[@id="event"]/dnx:record[dnx:key[@id="eventIdentifierValue"][. >= 272][. != 273][. <= 274]]';
+  my $compiled_xpath_ifpurged_event = XML::LibXML::XPathExpression->new('dnx:key[@id="eventDescription"]/text()');
+  my $compiled_xpath_purged_event_date = XML::LibXML::XPathExpression->new('dnx:key[@id="eventDateTime"]/text()');
+  my $compiled_xpath_purged_event_authorized_by = XML::LibXML::XPathExpression->new('dnx:key[@id="linkingAgentIdentifierValue1"]/text()');
+  my $compiled_xpath_purged_event_reason = XML::LibXML::XPathExpression->new('dnx:key[@id="eventOutcomeDetail1"]/text()');
 
   ############################################################
   sub get_title ($xp, $dmd){
@@ -536,32 +536,32 @@ XPATH
     }
   }
 
-  sub get_purged_states($xp, $amd) {
+  sub get_purged_states($xp, $dnx) {
     # we need to earch for eventIdentifierValue 272 or 274.
     # the eventDescription should be
     #   a) IE has been deleted
     #   b) IE has been purged
-    my @del_nodes = map {$_->nodeValue} $xp->findnodes($compiled_xpath_ifpurged_event, $amd);
+    my @del_nodes = map {$_->nodeValue} $xp->findnodes($compiled_xpath_ifpurged_event, $dnx);
     my @states = map {$_ =~ s/^IE has been (deleted|purged)$/$1/; $_}  @del_nodes;
     return \@states;
   }
 
-  sub has_purged_entries($xp, $amd) {
+  sub has_purged_entries($xp, $dnx) {
     # we need to earch for eventIdentifierValue 272 or 274.
     # the eventDescription should be
     #   a) IE has been deleted
     #   b) IE has been purged
-    return $xp->exists($compiled_xpath_ifpurged_event, $amd);
+    return $xp->exists($compiled_xpath_ifpurged_event, $dnx);
   }
 
-  sub get_purged_dates($xp, $amd) {
-    my @date_nodes = $xp->findnodes($compiled_xpath_purged_event_date, $amd);
+  sub get_purged_dates($xp, $dnx) {
+    my @date_nodes = $xp->findnodes($compiled_xpath_purged_event_date, $dnx);
     my @dates = map {$_->nodeValue} @date_nodes;
     return \@dates;
   }
 
-sub get_purged_notes($xp, $amd) {
-  my @entries_str = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_reason, $amd);
+sub get_purged_notes($xp, $dnx) {
+  my @entries_str = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_reason, $dnx);
   my @results;
   foreach my $e ( @entries_str) {
     my @entries = split(/;/, $e);
@@ -570,8 +570,8 @@ sub get_purged_notes($xp, $amd) {
   return \@results;
 }
 
-  sub get_purged_reasons($xp, $amd) {
-    my @entries_str = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_reason, $amd);
+  sub get_purged_reasons($xp, $dnx) {
+    my @entries_str = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_reason, $dnx);
     my @results;
     foreach my $e ( @entries_str) {
       my @entries = split(/;/, $e);
@@ -580,8 +580,8 @@ sub get_purged_notes($xp, $amd) {
     return \@results;
   }
 
-  sub get_purged_authorized_by($xp, $amd) {
-    my @auth = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_authorized_by, $amd);
+  sub get_purged_authorized_by($xp, $dnx) {
+    my @auth = map {$_->nodeValue} $xp->findnodes($compiled_xpath_purged_event_authorized_by, $dnx);
     return \@auth;
   }
 
@@ -645,9 +645,10 @@ sub parse_iexml($filename, $recovery_flag) {
     # get dc-records
     $ret->{"dcrecords"} = get_dcrecords_ref($xp, $dmdsec);
     ############################################
-    my $is_deleted = has_purged_entries($xp, $amdsec_ie);
+    my $dnx_ctx = $xp->findnodes($xpath_if_purged_expr, $amdsec_ie)->[0];
+    my $is_deleted = has_purged_entries($xp, $dnx_ctx);
     if ($is_deleted) {
-      my @purged_states = @{get_purged_states($xp, $amdsec_ie)};
+      my @purged_states = @{get_purged_states($xp, $dnx_ctx)};
       my $idx_purged;
       my $idx_deleted;
       for (my $i = 0; $i <= $#purged_states; $i++) {
@@ -656,16 +657,16 @@ sub parse_iexml($filename, $recovery_flag) {
       }
       if (defined $idx_purged) {
         $ret->{purged}->{state} = "purged";
-        $ret->{purged}->{reason} = get_purged_reasons($xp, $amdsec_ie)->[$idx_purged];
-        $ret->{purged}->{note} = get_purged_notes($xp, $amdsec_ie)->[$idx_purged];
-        $ret->{purged}->{date} = get_purged_dates($xp, $amdsec_ie)->[$idx_purged];
-        $ret->{purged}->{authorized_by} = get_purged_authorized_by($xp, $amdsec_ie)->[$idx_purged];
+        $ret->{purged}->{reason} = get_purged_reasons($xp, $dnx_ctx)->[$idx_purged];
+        $ret->{purged}->{note} = get_purged_notes($xp, $dnx_ctx)->[$idx_purged];
+        $ret->{purged}->{date} = get_purged_dates($xp, $dnx_ctx)->[$idx_purged];
+        $ret->{purged}->{authorized_by} = get_purged_authorized_by($xp, $dnx_ctx)->[$idx_purged];
       } else {
         $ret->{deleted}->{state} = "deleted";
-        $ret->{deleted}->{reason} = get_purged_reasons($xp, $amdsec_ie)->[$idx_deleted];
-        $ret->{deleted}->{note} = get_purged_notes($xp, $amdsec_ie)->[$idx_deleted];
-        $ret->{deleted}->{date} = get_purged_dates($xp, $amdsec_ie)->[$idx_deleted];
-        $ret->{deleted}->{authorized_by} = get_purged_authorized_by($xp, $amdsec_ie)->[$idx_deleted];
+        $ret->{deleted}->{reason} = get_purged_reasons($xp, $dnx_ctx)->[$idx_deleted];
+        $ret->{deleted}->{note} = get_purged_notes($xp, $dnx_ctx)->[$idx_deleted];
+        $ret->{deleted}->{date} = get_purged_dates($xp, $dnx_ctx)->[$idx_deleted];
+        $ret->{deleted}->{authorized_by} = get_purged_authorized_by($xp, $dnx_ctx)->[$idx_deleted];
       }
     }
     ############################################