diff --git a/testing/tests/regression-suite/2250-RRULE-expansion-PUT.result b/testing/tests/regression-suite/2250-RRULE-expansion-PUT.result
new file mode 100644
index 00000000..961d9eb3
--- /dev/null
+++ b/testing/tests/regression-suite/2250-RRULE-expansion-PUT.result
@@ -0,0 +1,46 @@
+HTTP/1.1 201 Created
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
+ETag: "460f45321d679808addb06c1370d4253"
+Content-Length: 0
+Content-Type: text/plain; charset="utf-8"
+
+
+ CalDAV Data: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:America/New_York
+END:VTIMEZONE
+BEGIN:VEVENT
+SUMMARY:Repeating event
+UID:complex-rrule-issue268
+DTSTART;TZID=America/New_York:20220720T091000
+RRULE:FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10
+ ,11,12,13,14,15,16
+END:VEVENT
+END:VCALENDAR
+<
+ caldav_type: >VEVENT<
+ class: >PUBLIC<
+ dav_etag: >460f45321d679808addb06c1370d4253<
+ description: >NULL<
+ dtend: >2022-07-20 09:10:00<
+ dtstart: >2022-07-20 09:10:00<
+ due: >NULL<
+ location: >NULL<
+ logged_user: >10<
+ percent_complete: >NULL<
+ priority: >NULL<
+ rrule: >FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10,11,12,13,14,15,16<
+ status: >NULL<
+ summary: >Repeating event<
+ transp: >NULL<
+ tz_id: >America/New_York<
+ uid: >complex-rrule-issue268<
+ url: >NULL<
+ user_no: >10<
+ ~Duration: >00:00:00<
+
diff --git a/testing/tests/regression-suite/2250-RRULE-expansion-PUT.test b/testing/tests/regression-suite/2250-RRULE-expansion-PUT.test
new file mode 100644
index 00000000..1e920c25
--- /dev/null
+++ b/testing/tests/regression-suite/2250-RRULE-expansion-PUT.test
@@ -0,0 +1,40 @@
+#
+# Create a recurring event, ensure we can fetch future events.
+# To test: https://gitlab.com/davical-project/davical/-/issues/268
+#
+TYPE=PUT
+URL=http://regression.host/caldav.php/user1/home/complex-rrule-issue268.ics
+HEADER=Content-Type: text/calendar
+HEAD
+
+
+BEGINDATA
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:America/New_York
+END:VTIMEZONE
+BEGIN:VEVENT
+SUMMARY:Repeating event
+UID:complex-rrule-issue268
+DTSTART;TZID=America/New_York:20220720T091000
+RRULE:FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10
+ ,11,12,13,14,15,16
+END:VEVENT
+END:VCALENDAR
+ENDDATA
+
+QUERY
+SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user,
+ uid, dtstart at time zone olson_name as dtstart,
+ dtend at time zone olson_name as dtend, due, summary, location,
+ description, priority, class, transp, rrule, url,
+ percent_complete, tz_id, status,
+ caldav_data AS " CalDAV Data",
+ dtend - dtstart AS "~Duration"
+FROM caldav_data JOIN calendar_item USING(dav_name) JOIN timezones ON (tz_id=tzid)
+WHERE caldav_data.dav_name =
+'/user1/home/complex-rrule-issue268.ics';
+ENDQUERY
diff --git a/testing/tests/regression-suite/2251-RRULE-REPORT-1.result b/testing/tests/regression-suite/2251-RRULE-REPORT-1.result
new file mode 100644
index 00000000..a733b9c2
--- /dev/null
+++ b/testing/tests/regression-suite/2251-RRULE-REPORT-1.result
@@ -0,0 +1,33 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
+ETag: "looks like an etag"
+Content-Length: 659
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user1/home/complex-rrule-issue268.ics
+
+
+ "460f45321d679808addb06c1370d4253"
+ BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+SUMMARY:Repeating event
+UID:complex-rrule-issue268
+DTSTART:20220720T155500Z
+DURATION:P0D
+RECURRENCE-ID:20220720T155500Z
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
diff --git a/testing/tests/regression-suite/2251-RRULE-REPORT-1.test b/testing/tests/regression-suite/2251-RRULE-REPORT-1.test
new file mode 100644
index 00000000..250f4439
--- /dev/null
+++ b/testing/tests/regression-suite/2251-RRULE-REPORT-1.test
@@ -0,0 +1,36 @@
+#
+#
+# Fetch an instance from a recurring event.
+# To test: https://gitlab.com/davical-project/davical/-/issues/268
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user1/home/
+HEADER=Content-Type: text/xml
+HEADER=Depth: 1
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+REPLACE=/ETag: "[a-z0-9]+"/ETag: "looks like an etag"/
diff --git a/testing/tests/regression-suite/2252-RRULE-REPORT-2.result b/testing/tests/regression-suite/2252-RRULE-REPORT-2.result
new file mode 100644
index 00000000..d8945f69
--- /dev/null
+++ b/testing/tests/regression-suite/2252-RRULE-REPORT-2.result
@@ -0,0 +1,33 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
+ETag: "looks like an etag"
+Content-Length: 659
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user1/home/complex-rrule-issue268.ics
+
+
+ "460f45321d679808addb06c1370d4253"
+ BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+SUMMARY:Repeating event
+UID:complex-rrule-issue268
+DTSTART:20220721T155500Z
+DURATION:P0D
+RECURRENCE-ID:20220721T155500Z
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
diff --git a/testing/tests/regression-suite/2252-RRULE-REPORT-2.test b/testing/tests/regression-suite/2252-RRULE-REPORT-2.test
new file mode 100644
index 00000000..196a7adc
--- /dev/null
+++ b/testing/tests/regression-suite/2252-RRULE-REPORT-2.test
@@ -0,0 +1,35 @@
+#
+# Fetch a future instance from a recurring event.
+# To test: https://gitlab.com/davical-project/davical/-/issues/268
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user1/home/
+HEADER=Content-Type: text/xml
+HEADER=Depth: 1
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+REPLACE=/ETag: "[a-z0-9]+"/ETag: "looks like an etag"/