diff --git a/extensions/modules/scheduler/pom.xml b/extensions/modules/scheduler/pom.xml
index 51ab9e8f2f..716536a6f4 100644
--- a/extensions/modules/scheduler/pom.xml
+++ b/extensions/modules/scheduler/pom.xml
@@ -126,6 +126,16 @@
+
+
+ src/test/resources
+ false
+
+
+ src/test/resources-filtered
+ true
+
+
@@ -145,6 +155,12 @@
xml-apis
+
+ junit
+ junit
+ test
+
+
\ No newline at end of file
diff --git a/extensions/modules/scheduler/src/test/java/xquery/modules/scheduler/SchedulerTests.java b/extensions/modules/scheduler/src/test/java/xquery/modules/scheduler/SchedulerTests.java
new file mode 100644
index 0000000000..c7edf00c3a
--- /dev/null
+++ b/extensions/modules/scheduler/src/test/java/xquery/modules/scheduler/SchedulerTests.java
@@ -0,0 +1,11 @@
+package xquery.modules.scheduler;
+
+import org.exist.test.runner.XSuite;
+import org.junit.runner.RunWith;
+
+@RunWith(XSuite.class)
+@XSuite.XSuiteFiles({
+ "src/test/xquery/modules/scheduler"
+})
+public class SchedulerTests {
+}
\ No newline at end of file
diff --git a/extensions/modules/scheduler/src/test/resources-filtered/conf.xml b/extensions/modules/scheduler/src/test/resources-filtered/conf.xml
new file mode 100644
index 0000000000..0b66cbdaae
--- /dev/null
+++ b/extensions/modules/scheduler/src/test/resources-filtered/conf.xml
@@ -0,0 +1,806 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/modules/scheduler/src/test/resources/log4j2.xml b/extensions/modules/scheduler/src/test/resources/log4j2.xml
new file mode 100644
index 0000000000..20f797787a
--- /dev/null
+++ b/extensions/modules/scheduler/src/test/resources/log4j2.xml
@@ -0,0 +1,259 @@
+
+
+
+
+ ${log4j:configParentLocation}/../../target/test-logs-${date:yyyyMMddHHmmssSSS}
+ 10MB
+ 0 0 0 * * ?
+ 14
+ %d{yyyyMMddHHmmss}
+ %d{yyyy-MM-dd}
+ %d [%t] %-5p (%F [%M]:%L) - %m%n
+ %m%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/modules/scheduler/src/test/xquery/modules/scheduler/scheduler-external-variable-default.xql b/extensions/modules/scheduler/src/test/xquery/modules/scheduler/scheduler-external-variable-default.xql
new file mode 100644
index 0000000000..000a78f1f1
--- /dev/null
+++ b/extensions/modules/scheduler/src/test/xquery/modules/scheduler/scheduler-external-variable-default.xql
@@ -0,0 +1,53 @@
+xquery version "3.1";
+
+module namespace t = "http://exist-db.org/testsuite/scheduler-external-variable-default";
+
+import module namespace test = "http://exist-db.org/xquery/xqsuite" at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
+
+declare namespace scheduler = "http://exist-db.org/xquery/scheduler";
+declare namespace xmldb = "http://exist-db.org/xquery/xmldb";
+declare namespace util = "http://exist-db.org/xquery/util";
+
+declare variable $t:collection := "/db/scheduler-default-test";
+declare variable $t:job-name := "scheduler-default-test-job";
+
+declare variable $t:worker-query :=
+ "xquery version '3.1';
+ declare variable $addressee external := 'default';
+ xmldb:store('" || $t:collection || "', 'result.xml', {$addressee})";
+
+declare
+ %test:setUp
+function t:setup() {
+ xmldb:create-collection("/db", "scheduler-default-test"),
+ xmldb:store($t:collection, "worker.xql", $t:worker-query)
+};
+
+declare
+ %test:tearDown
+function t:cleanup() {
+ scheduler:delete-scheduled-job($t:job-name),
+ xmldb:remove($t:collection)
+};
+
+declare
+ %test:assertTrue
+function t:schedule-job-with-parameter() as xs:boolean {
+ scheduler:schedule-xquery-periodic-job(
+ $t:collection || "/worker.xql",
+ 0,
+ $t:job-name,
+
+
+ ,
+ 0,
+ 0
+ )
+};
+
+declare
+ %test:assertEquals("overridden")
+function t:external-variable-was-overridden() as xs:string {
+ util:wait(1000),
+ doc($t:collection || "/result.xml")/result/string()
+};
\ No newline at end of file