diff --git a/gramps/plugins/database/dbapi.py b/gramps/plugins/database/dbapi.py
index 5b7d9b032..272e713a6 100644
--- a/gramps/plugins/database/dbapi.py
+++ b/gramps/plugins/database/dbapi.py
@@ -577,7 +577,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         self.transaction = None
         self.abort_possible = False
         self._bm_changes = 0
-        self._has_changed = False
+        self.has_changed = False
         self.genderStats = GenderStats() # can pass in loaded stats as dict
         self.owner = Researcher()
         if directory:
@@ -1456,7 +1456,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([person.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def add_to_surname_list(self, person, batch_transaction):
         """
@@ -1546,7 +1546,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([family.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_citation(self, citation, trans, change_time=None):
         emit = None
@@ -1585,7 +1585,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([citation.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_source(self, source, trans, change_time=None):
         emit = None
@@ -1626,7 +1626,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([source.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_repository(self, repository, trans, change_time=None):
         emit = None
@@ -1655,7 +1655,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([repository.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_note(self, note, trans, change_time=None):
         emit = None
@@ -1681,7 +1681,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([note.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_place(self, place, trans, change_time=None):
         emit = None
@@ -1721,7 +1721,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([place.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def commit_event(self, event, trans, change_time=None):
         emit = None
@@ -1757,7 +1757,7 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         # Emit after added:
         if emit:
             self.emit(emit, ([event.handle],))
-        self._has_changed = True
+        self.has_changed = True
 
     def update_backlinks(self, obj):
         # First, delete the current references:
@@ -2036,11 +2036,6 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
 
     def close(self):
         if self._directory:
-            from gramps.plugins.export.exportxml import XmlWriter
-            from gramps.cli.user import User 
-            writer = XmlWriter(self, User(), strip_photos=0, compress=1)
-            filename = os.path.join(self._directory, "data.gramps")
-            writer.write(filename)
             filename = os.path.join(self._directory, "meta_data.db")
             touch(filename)
             # Save metadata
@@ -2276,9 +2271,6 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
     def get_source_bookmarks(self):
         return self.source_bookmarks
 
-    def has_changed(self):
-        return self._has_changed
-
     def is_open(self):
         return self._directory is not None
 
@@ -2492,9 +2484,9 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
             self.path = self.full_name
             self.brief_name = os.path.basename(self._directory)
         else:
-            self.full_name = ""
-            self.path = ""
-            self.brief_name = ""
+            self.full_name = None
+            self.path = None
+            self.brief_name = None
 
     def write_version(self, directory):
         """Write files for a newly created DB."""
@@ -2834,7 +2826,11 @@ class DBAPI(DbWriteBase, DbReadBase, UpdateCallback, Callback):
         """
         If you wish to support an optional backup routine, put it here.
         """
-        pass
+        from gramps.plugins.export.exportxml import XmlWriter
+        from gramps.cli.user import User 
+        writer = XmlWriter(self, User(), strip_photos=0, compress=1)
+        filename = os.path.join(self._directory, "data.gramps")
+        writer.write(filename)
 
     def restore(self):
         """