diff --git a/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java b/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java
index 5bd690b3830..0a50ddaf9e1 100644
--- a/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java
+++ b/exist-core/src/main/java/org/exist/collections/triggers/XQueryTrigger.java
@@ -405,6 +405,7 @@ private void execute(final TriggerPhase phase, final TriggerEvent event, final D
 			compiledQuery = getScript(broker, transaction);
 			if (compiledQuery == null) {
 				// NOTE: can occur if there is no such XQueryTrigger library module available in the database
+				TriggerStatePerThread.clearIfFinished(phase);
 				return;
 			}
 		} catch (final TriggerException e) {
@@ -447,6 +448,7 @@ private void execute(final TriggerPhase phase, final TriggerEvent event, final D
 					if (LOG.isDebugEnabled()) {
 						LOG.debug("No such function '" + functionName + "' in XQueryTrigger: " + compiledQuery.getSource());
 					}
+					TriggerStatePerThread.clearIfFinished(phase);
 					return;
 				}
 			}
diff --git a/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java b/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java
index 67d22cae0ff..986a143d869 100644
--- a/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java
+++ b/exist-core/src/test/java/org/exist/storage/StoreResourceTest.java
@@ -52,7 +52,7 @@
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.exist.test.TestConstants.TEST_COLLECTION_URI;
 import static org.hamcrest.Matchers.*;
-import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.junit.Assert.*;
 
 public class StoreResourceTest {
@@ -80,7 +80,7 @@ public void replaceXmlAsOwner() throws AuthenticationException, LockException, P
         final Subject user2 = existWebServer.getBrokerPool().getSecurityManager().authenticate(USER2_NAME, USER2_PWD);
         final long originalDoc1LastModified = getLastModified(USER1_DOC1);
         replaceXmlDoc(user2, USER1_DOC1, "<something>else</something>");
-        checkAttributes(USER1_DOC1, USER1_NAME, GROUP1_NAME, USER1_DOC1_MODE, equalTo(getCreated(USER1_DOC1)), not(originalDoc1LastModified));
+        checkAttributes(USER1_DOC1, USER1_NAME, GROUP1_NAME, USER1_DOC1_MODE, equalTo(getCreated(USER1_DOC1)), greaterThanOrEqualTo(originalDoc1LastModified));
     }
 
     /**
@@ -91,7 +91,7 @@ public void replaceBinaryAsGroupMember() throws AuthenticationException, LockExc
         final Subject user2 = existWebServer.getBrokerPool().getSecurityManager().authenticate(USER2_NAME, USER2_PWD);
         final long originalDoc1LastModified = getLastModified(USER1_BIN_DOC1);
         replaceBinDoc(user2, USER1_BIN_DOC1, "something else");
-        checkAttributes(USER1_BIN_DOC1, USER1_NAME, GROUP1_NAME, USER1_BIN_DOC1_MODE, equalTo(getCreated(USER1_BIN_DOC1)), not(originalDoc1LastModified));
+        checkAttributes(USER1_BIN_DOC1, USER1_NAME, GROUP1_NAME, USER1_BIN_DOC1_MODE, equalTo(getCreated(USER1_BIN_DOC1)), greaterThanOrEqualTo(originalDoc1LastModified));
     }
 
     private void replaceXmlDoc(final Subject execAsUser, final XmldbURI docName, final String content) throws EXistException, PermissionDeniedException, LockException, IOException, SAXException {