diff --git a/db_scripts/diff/8878.down b/db_scripts/diff/8878.down
new file mode 100644
index 00000000..1f6e1007
--- /dev/null
+++ b/db_scripts/diff/8878.down
@@ -0,0 +1,17 @@
+USE kamailio;
+
+DROP TABLE IF EXISTS active_watchers;
+DROP TABLE IF EXISTS presentity;
+DROP TABLE IF EXISTS pua;
+DROP TABLE IF EXISTS rls_presentity;
+DROP TABLE IF EXISTS rls_watchers;
+DROP TABLE IF EXISTS watchers;
+DROP TABLE IF EXISTS xcap;
+
+DELETE FROM version where table_name = 'active_watchers';
+DELETE FROM version where table_name = 'presentity';
+DELETE FROM version where table_name = 'pua';
+DELETE FROM version where table_name = 'rls_presentity';
+DELETE FROM version where table_name = 'rls_watchers';
+DELETE FROM version where table_name = 'watchers';
+DELETE FROM version where table_name = 'xcap';
diff --git a/db_scripts/diff/8878.up b/db_scripts/diff/8878.up
new file mode 100644
index 00000000..d8fbcbf1
--- /dev/null
+++ b/db_scripts/diff/8878.up
@@ -0,0 +1,141 @@
+USE kamailio;
+
+CREATE TABLE `active_watchers` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `presentity_uri` varchar(128) NOT NULL,
+  `watcher_username` varchar(64) NOT NULL,
+  `watcher_domain` varchar(64) NOT NULL,
+  `to_user` varchar(64) NOT NULL,
+  `to_domain` varchar(64) NOT NULL,
+  `event` varchar(64) NOT NULL DEFAULT 'presence',
+  `event_id` varchar(64) DEFAULT NULL,
+  `to_tag` varchar(64) NOT NULL,
+  `from_tag` varchar(64) NOT NULL,
+  `callid` varchar(128) NOT NULL,
+  `local_cseq` int(11) NOT NULL,
+  `remote_cseq` int(11) NOT NULL,
+  `contact` varchar(128) NOT NULL,
+  `record_route` text,
+  `expires` int(11) NOT NULL,
+  `status` int(11) NOT NULL DEFAULT '2',
+  `reason` varchar(64) NOT NULL,
+  `version` int(11) NOT NULL DEFAULT '0',
+  `socket_info` varchar(64) NOT NULL,
+  `local_contact` varchar(128) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `active_watchers_idx` (`presentity_uri`,`callid`,`to_tag`,`from_tag`)
+) ENGINE=InnoDB;
+INSERT INTO version values('active_watchers', 9);
+
+CREATE TABLE `presentity` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(64) NOT NULL,
+  `domain` varchar(64) NOT NULL,
+  `event` varchar(64) NOT NULL,
+  `etag` varchar(64) NOT NULL,
+  `expires` int(11) NOT NULL,
+  `received_time` int(11) NOT NULL,
+  `body` blob NOT NULL,
+  `sender` varchar(128) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `presentity_idx` (`username`,`domain`,`event`,`etag`)
+) ENGINE=InnoDB;
+INSERT INTO version values('presentity', 3);
+
+CREATE TABLE `pua` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `pres_uri` varchar(128) NOT NULL,
+  `pres_id` varchar(64) NOT NULL,
+  `event` int(11) NOT NULL,
+  `expires` int(11) NOT NULL,
+  `desired_expires` int(11) NOT NULL,
+  `flag` int(11) NOT NULL,
+  `etag` varchar(64) NOT NULL,
+  `tuple_id` varchar(64) DEFAULT NULL,
+  `watcher_uri` varchar(128) NOT NULL,
+  `call_id` varchar(128) NOT NULL,
+  `to_tag` varchar(64) NOT NULL,
+  `from_tag` varchar(64) NOT NULL,
+  `cseq` int(11) NOT NULL,
+  `record_route` text,
+  `contact` varchar(128) NOT NULL,
+  `remote_contact` varchar(128) NOT NULL,
+  `version` int(11) NOT NULL,
+  `extra_headers` text NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB;
+INSERT INTO version values('pua', 6);
+
+CREATE TABLE `rls_presentity` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `rlsubs_did` varchar(255) NOT NULL,
+  `resource_uri` varchar(128) NOT NULL,
+  `content_type` varchar(64) NOT NULL,
+  `presence_state` blob NOT NULL,
+  `expires` int(11) NOT NULL,
+  `updated` int(11) NOT NULL,
+  `auth_state` int(11) NOT NULL,
+  `reason` varchar(64) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `rls_presentity_idx` (`rlsubs_did`,`resource_uri`),
+  KEY `updated_idx` (`updated`)
+) ENGINE=InnoDB;
+INSERT INTO version values('rls_presentity', 0);
+
+CREATE TABLE `rls_watchers` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `presentity_uri` varchar(128) NOT NULL,
+  `to_user` varchar(64) NOT NULL,
+  `to_domain` varchar(64) NOT NULL,
+  `watcher_username` varchar(64) NOT NULL,
+  `watcher_domain` varchar(64) NOT NULL,
+  `event` varchar(64) NOT NULL DEFAULT 'presence',
+  `event_id` varchar(64) DEFAULT NULL,
+  `to_tag` varchar(64) NOT NULL,
+  `from_tag` varchar(64) NOT NULL,
+  `callid` varchar(64) NOT NULL,
+  `local_cseq` int(11) NOT NULL,
+  `remote_cseq` int(11) NOT NULL,
+  `contact` varchar(64) NOT NULL,
+  `record_route` text,
+  `expires` int(11) NOT NULL,
+  `status` int(11) NOT NULL DEFAULT '2',
+  `reason` varchar(64) NOT NULL,
+  `version` int(11) NOT NULL DEFAULT '0',
+  `socket_info` varchar(64) NOT NULL,
+  `local_contact` varchar(128) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `rls_watcher_idx` (`presentity_uri`,`callid`,`to_tag`,`from_tag`)
+) ENGINE=InnoDB;
+INSERT INTO version values('rls_watchers', 1);
+
+CREATE TABLE `watchers` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `presentity_uri` varchar(128) NOT NULL,
+  `watcher_username` varchar(64) NOT NULL,
+  `watcher_domain` varchar(64) NOT NULL,
+  `event` varchar(64) NOT NULL DEFAULT 'presence',
+  `status` int(11) NOT NULL,
+  `reason` varchar(64) DEFAULT NULL,
+  `inserted_time` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `watcher_idx` (`presentity_uri`,`watcher_username`,`watcher_domain`,`event`)
+) ENGINE=InnoDB;
+INSERT INTO version values('watchers', 3);
+
+CREATE TABLE `xcap` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(64) NOT NULL,
+  `domain` varchar(64) NOT NULL,
+  `doc` blob NOT NULL,
+  `doc_type` int(11) NOT NULL,
+  `etag` varchar(64) NOT NULL,
+  `source` int(11) NOT NULL,
+  `doc_uri` varchar(128) NOT NULL,
+  `port` int(11) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `account_doc_type_idx` (`username`,`domain`,`doc_type`,`doc_uri`),
+  KEY `source_idx` (`source`)
+) ENGINE=InnoDB;
+INSERT INTO version values('xcap', 3);
+