diff --git a/installers/charm/osm-pol/src/charm.py b/installers/charm/osm-pol/src/charm.py
index 2749ddb..07bf87e 100755
--- a/installers/charm/osm-pol/src/charm.py
+++ b/installers/charm/osm-pol/src/charm.py
@@ -30,6 +30,7 @@
 import logging
 from typing import Any, Dict
 
+from charms.data_platform_libs.v0.data_interfaces import DatabaseRequires
 from charms.kafka_k8s.v0.kafka import KafkaEvents, KafkaRequires
 from charms.osm_libs.v0.utils import (
     CharmError,
@@ -43,7 +44,7 @@
 from ops.main import main
 from ops.model import ActiveStatus, Container
 
-from legacy_interfaces import MongoClient, MysqlClient
+from legacy_interfaces import MysqlClient
 
 HOSTPATHS = [
     HostPath(
@@ -71,7 +72,7 @@
         super().__init__(*args)
 
         self.kafka = KafkaRequires(self)
-        self.mongodb_client = MongoClient(self, "mongodb")
+        self.mongodb_client = DatabaseRequires(self, "mongodb", database_name="osm")
         self.mysql_client = MysqlClient(self, "mysql")
         self._observe_charm_events()
         self.container: Container = self.unit.get_container(self.container_name)
@@ -145,16 +146,23 @@
             # Relation events
             self.on.kafka_available: self._on_config_changed,
             self.on["kafka"].relation_broken: self._on_required_relation_broken,
+            self.on["mysql"].relation_changed: self._on_config_changed,
+            self.on["mysql"].relation_broken: self._on_config_changed,
+            self.mongodb_client.on.database_created: self._on_config_changed,
+            self.on["mongodb"].relation_broken: self._on_required_relation_broken,
             # Action events
             self.on.get_debug_mode_information_action: self._on_get_debug_mode_information_action,
         }
-        for relation in [self.on[rel_name] for rel_name in ["mongodb", "mysql"]]:
-            event_handler_mapping[relation.relation_changed] = self._on_config_changed
-            event_handler_mapping[relation.relation_broken] = self._on_required_relation_broken
 
         for event, handler in event_handler_mapping.items():
             self.framework.observe(event, handler)
 
+    def _is_database_available(self) -> bool:
+        try:
+            return self.mongodb_client.is_resource_created()
+        except KeyError:
+            return False
+
     def _validate_config(self) -> None:
         """Validate charm configuration.
 
@@ -174,7 +182,7 @@
 
         if not self.kafka.host or not self.kafka.port:
             missing_relations.append("kafka")
-        if self.mongodb_client.is_missing_data_in_unit():
+        if not self._is_database_available():
             missing_relations.append("mongodb")
         if not self.config.get("mysql-uri") and self.mysql_client.is_missing_data_in_unit():
             missing_relations.append("mysql")
@@ -214,7 +222,7 @@
                         "OSMPOL_MESSAGE_DRIVER": "kafka",
                         # Database Mongodb configuration
                         "OSMPOL_DATABASE_DRIVER": "mongo",
-                        "OSMPOL_DATABASE_URI": self.mongodb_client.connection_string,
+                        "OSMPOL_DATABASE_URI": self._get_mongodb_uri(),
                         # Database MySQL configuration
                         "OSMPOL_SQL_DATABASE_URI": self._get_mysql_uri(),
                     },
@@ -225,6 +233,9 @@
     def _get_mysql_uri(self):
         return self.config.get("mysql-uri") or self.mysql_client.get_root_uri("pol")
 
+    def _get_mongodb_uri(self):
+        return list(self.mongodb_client.fetch_relation_data().values())[0]["uris"]
+
 
 if __name__ == "__main__":  # pragma: no cover
     main(OsmPolCharm)
