diff --git a/testing/tests/scheduling/3100-PUT-Recurring.result b/testing/tests/scheduling/3100-PUT-Recurring.result
new file mode 100644
index 00000000..f68fdccc
--- /dev/null
+++ b/testing/tests/scheduling/3100-PUT-Recurring.result
@@ -0,0 +1,140 @@
+
+ caldav_type: >VEVENT<
+ dav_name: >/user1/home/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >10<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL=mana
+ ger1@example.net;ROLE=REQ-PARTICIPANT;RSVP=TRUE;SCHEDULE-STATUS=1.2:mail
+ to:manager1@example.net
+ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
+ PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN=User 1:mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+<
+
+ caldav_type: >VEVENT<
+ dav_name: >/manager1/.in/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >20<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+METHOD:REQUEST
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL="m
+ anager1@example.net";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@exam
+ ple.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN="User 1":mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+<
+
+ caldav_type: >VEVENT<
+ dav_name: >/manager1/home/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >20<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL="m
+ anager1@example.net";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@exam
+ ple.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN="User 1":mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+<
+
diff --git a/testing/tests/scheduling/3100-PUT-Recurring.test b/testing/tests/scheduling/3100-PUT-Recurring.test
new file mode 100644
index 00000000..11448f48
--- /dev/null
+++ b/testing/tests/scheduling/3100-PUT-Recurring.test
@@ -0,0 +1,68 @@
+#
+# Test event with recurrance
+#
+TYPE=PUT
+URL=http://regression.host/user1/home/recurring-event.ics
+
+HEADER=User-Agent: DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
+HEADER=Content-Type: text/calendar
+
+# REPLACE=#\d{8}T\d{6}#YYYYMMDDThhmmss#
+# REPLACE=/^DTSTAMP:\d{4}[01]\d[0123]\dT[012]\d[0-5]\d[0-6]\dZ\r?$/DTSTAMP:yyyymmddThhmmssZ/
+
+# QUERY
+# ENDQUERY
+
+BEGINDATA
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL="m
+ anager1@example.net";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@exa
+ mple.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:20111018T200107Z
+ORGANIZER;CN="User 1":mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+ENDDATA
+
+
+QUERY
+SELECT caldav_data.user_no, caldav_data.dav_name,
+ caldav_type, logged_user,
+ regexp_replace(caldav_data,'DTSTAMP:[0-9T]{15}Z','DTSTAMP:looks good') AS vcalendar,
+ summary
+FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
+WHERE calendar_item.uid = 'recurring-event'
+ORDER BY caldav_data.dav_id
+ENDQUERY
+
diff --git a/testing/tests/scheduling/3105-PUT-Exception.result b/testing/tests/scheduling/3105-PUT-Exception.result
new file mode 100644
index 00000000..16ec6ba4
--- /dev/null
+++ b/testing/tests/scheduling/3105-PUT-Exception.result
@@ -0,0 +1,166 @@
+
+ caldav_type: >VEVENT<
+ dav_name: >/user1/home/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >10<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION:
+ mailto:manager1@example.net
+ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
+ PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT;SCHEDULE-STATUS=2.0:mailto:user1@
+ example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+SEQUENCE:6
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=WE
+EXDATE:TZID=Pacific/Auckland:20111026T100000
+ORGANIZER;CN=Manager 1;SCHEDULE-STATUS=1.2:mailto:manager1@example.net
+END:VEVENT
+END:VCALENDAR
+<
+
+ caldav_type: >VEVENT<
+ dav_name: >/manager1/.in/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >20<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+METHOD:REQUEST
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL="m
+ anager1@example.net";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@exam
+ ple.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN="User 1":mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+<
+
+ caldav_type: >VEVENT<
+ dav_name: >/manager1/home/recurring-event.ics<
+ logged_user: >10<
+ summary: >Meeting with User1 weekly<
+ user_no: >20<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN=User 1:mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL=mana
+ ger1@example.net;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@example.
+ net
+ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
+ PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT;SCHEDULE-STATUS=2.0:mailto:user1@
+ example.net
+END:VEVENT
+END:VCALENDAR
+<
+
+ caldav_type: >VEVENT<
+ dav_name: >/manager1/.in/user1recurring-event.ics<
+ logged_user: >10<
+ summary: >NULL<
+ user_no: >20<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+METHOD:REPLY
+BEGIN:VEVENT
+UID:recurring-event
+DTEND:20111018T220000Z
+DTSTART:20111018T210000Z
+ORGANIZER;CN=User 1:mailto:user1@example.net
+SEQUENCE:5
+ATTENDEE;CN=user1@example.net;EMAIL=user1@example.net;PARTSTAT=ACCEPTED;
+ ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+DTSTAMP:looks good
+REQUEST-STATUS:2.0
+END:VEVENT
+END:VCALENDAR
+<
+
diff --git a/testing/tests/scheduling/3105-PUT-Exception.test b/testing/tests/scheduling/3105-PUT-Exception.test
new file mode 100644
index 00000000..4d2e4242
--- /dev/null
+++ b/testing/tests/scheduling/3105-PUT-Exception.test
@@ -0,0 +1,70 @@
+#
+# Test event with recurrance, and an exception.
+#
+# There should be updated events posted to users' .in boxes.
+#
+TYPE=PUT
+URL=http://regression.host/user1/home/recurring-event.ics
+
+HEADER=User-Agent: DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
+HEADER=Content-Type: text/calendar
+
+# REPLACE=#\d{8}T\d{6}#YYYYMMDDThhmmss#
+# REPLACE=/^DTSTAMP:\d{4}[01]\d[0123]\dT[012]\d[0-5]\d[0-6]\dZ\r?$/DTSTAMP:yyyymmddThhmmssZ/
+
+# QUERY
+# ENDQUERY
+
+BEGINDATA
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION:mailto:m
+ anager1@example.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:20111018T200107Z
+ORGANIZER;CN="Manager 1":mailto:manager1@example.net
+SEQUENCE:6
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=WE
+EXDATE:TZID=Pacific/Auckland:20111026T100000
+END:VEVENT
+END:VCALENDAR
+ENDDATA
+
+
+QUERY
+SELECT caldav_data.user_no, caldav_data.dav_name,
+ caldav_type, logged_user,
+ regexp_replace(caldav_data,'DTSTAMP:[0-9T]{15}Z','DTSTAMP:looks good') AS vcalendar,
+ summary
+FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
+WHERE calendar_item.uid = 'recurring-event'
+ORDER BY caldav_data.dav_id
+ENDQUERY
+
diff --git a/testing/tests/scheduling/3106-DELETE-Recurring.result b/testing/tests/scheduling/3106-DELETE-Recurring.result
new file mode 100644
index 00000000..26b8362c
--- /dev/null
+++ b/testing/tests/scheduling/3106-DELETE-Recurring.result
@@ -0,0 +1,112 @@
+HTTP/1.1 204 No Content
+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
+
+
+ dav_name: >/manager1/.in/recurring-event.ics<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+METHOD:REQUEST
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+ATTENDEE;CN="Manager 1";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL="m
+ anager1@example.net";ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@exam
+ ple.net
+ATTENDEE;CN="user1@example.net";CUTYPE=INDIVIDUAL;EMAIL="user1@example.n
+ et";PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN="User 1":mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+END:VEVENT
+END:VCALENDAR
+<
+
+ dav_name: >/manager1/home/recurring-event.ics<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+BEGIN:VTIMEZONE
+TZID:Pacific/Auckland
+BEGIN:DAYLIGHT
+TZOFFSETFROM:+1200
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU
+DTSTART:20070930T020000
+TZNAME:GMT+13:00
+TZOFFSETTO:+1300
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:+1300
+RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
+DTSTART:20080406T030000
+TZNAME:GMT+12:00
+TZOFFSETTO:+1200
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+CREATED:20111018T195845Z
+UID:recurring-event
+DTEND;TZID=Pacific/Auckland:20111019T110000
+TRANSP:OPAQUE
+SUMMARY:Meeting with User1 weekly
+DTSTART;TZID=Pacific/Auckland:20111019T100000
+DTSTAMP:looks good
+ORGANIZER;CN=User 1:mailto:user1@example.net
+SEQUENCE:5
+RRULE:FREQ=WEEKLY;WKST=SU;INTERVAL=1;COUNT=10;BYDAY=SA
+ATTENDEE;CN=Manager 1;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;EMAIL=mana
+ ger1@example.net;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:manager1@example.
+ net
+ATTENDEE;CN=user1@example.net;CUTYPE=INDIVIDUAL;EMAIL=user1@example.net;
+ PARTSTAT=DECLINED;ROLE=REQ-PARTICIPANT;SCHEDULE-STATUS=2.0:mailto:user1@
+ example.net
+END:VEVENT
+END:VCALENDAR
+<
+
+ dav_name: >/manager1/.in/user1recurring-event.ics<
+ vcalendar: >BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Apple Inc.//iCal 4.0.4//EN
+CALSCALE:GREGORIAN
+METHOD:REPLY
+BEGIN:VEVENT
+UID:recurring-event
+DTEND:20111018T220000Z
+DTSTART:20111018T210000Z
+ORGANIZER;CN=User 1:mailto:user1@example.net
+SEQUENCE:5
+ATTENDEE;CN=user1@example.net;EMAIL=user1@example.net;PARTSTAT=DECLINED;
+ ROLE=REQ-PARTICIPANT:mailto:user1@example.net
+DTSTAMP:looks good
+REQUEST-STATUS:2.0
+END:VEVENT
+END:VCALENDAR
+<
+
diff --git a/testing/tests/scheduling/3106-DELETE-Recurring.test b/testing/tests/scheduling/3106-DELETE-Recurring.test
new file mode 100644
index 00000000..024fd798
--- /dev/null
+++ b/testing/tests/scheduling/3106-DELETE-Recurring.test
@@ -0,0 +1,21 @@
+#
+# We now DELETE the organisers copy of the actual event.
+#
+TYPE=DELETE
+URL=http://regression.host/user1/home/recurring-event.ics
+
+HEADER=User-Agent: DAVKit/4.0.3 (732.2); CalendarStore/4.0.4 (997.7); iCal/4.0.4 (1395.7); Mac OS X/10.6.8 (10K549)
+HEAD
+
+#
+# Query to confirm we got rid of it.
+# - An event in the manager's calendar, with a PARTSTART=DECLINED for user 1
+# - An iTIP message in the manager's inbox.
+QUERY
+SELECT calendar_item.dav_name,
+ regexp_replace(caldav_data,'DTSTAMP:[0-9T]{15}Z','DTSTAMP:looks good') AS vcalendar
+ FROM calendar_item JOIN caldav_data USING(dav_id, dav_name)
+ WHERE uid = 'recurring-event'
+ ORDER BY dav_id
+ENDQUERY
+
diff --git a/testing/tests/timezone/Restore-Database.result b/testing/tests/timezone/Restore-Database.result
index c3dcdc7b..957db03b 100644
--- a/testing/tests/timezone/Restore-Database.result
+++ b/testing/tests/timezone/Restore-Database.result
@@ -5,7 +5,7 @@
setval
--------
- 1679
+ 1683
(1 row)
setval
@@ -125,7 +125,7 @@
setval
--------
- 49
+ 50
(1 row)
setval