diff --git a/windows/netreport/src/netreport.py b/windows/netreport/src/netreport.py
index 5e1e7583d971adde92a7b13e4036b5c380b8c5ee..1dc41038eebf322f6071ecf52e502310f5e15999 100644
--- a/windows/netreport/src/netreport.py
+++ b/windows/netreport/src/netreport.py
@@ -110,6 +110,7 @@ class NetDriveUsageReporter(object):
 
     def run(self):
         self.initializeConfigData()
+        self.sendAllReport()
         self.initializeConnection()
         last_timestamp = datetime.now()
         try:
@@ -134,6 +135,17 @@ class NetDriveUsageReporter(object):
                " VALUES (?, ?, ?, ?, ?, ?)",
                (self._config_id, r[0], r[1], start, duration, r[3] - r[2]))
 
+    def sendAllReport(self):
+        """Called at startup of this application, send all report
+          in the config table."""
+        q = self._db.execute
+        for r in q("SELECT _rowid, domain_account, computer_id, report_date "
+                   "FROM config "
+                   "WHERE report_date < date('now')"):
+            self._postData(self.generateDailyReport(*r))
+        q("UPDATE config SET report_date = date('now') "
+          "WHERE report_date < date('now')")
+
     def sendReport(self):
         # If report_date is not today, then
         #    Generate xml data from local table by report_date
@@ -142,7 +154,10 @@ class NetDriveUsageReporter(object):
         #    (Optional) Move all the reported data to histroy table
         today = date.today().isoformat()
         if self._report_date < today:
-            self._postData(self.generateDailyReport())
+            self._postData(self.generateDailyReport(self._config_id,
+                                                    self.computer_id,
+                                                    self._domain_account,
+                                                    self._report_date))
             self._db.execute("UPDATE config SET report_date=? where _rowid=?",
                              (today, self._config_id))
 
@@ -150,7 +165,8 @@ class NetDriveUsageReporter(object):
         """Send a marshalled dictionary of the net drive usage record
         serialized via_getDict.
         """
-        self.slap_computer.reportNetDriveUsage(xml_data)
+        if xml_data is not None:
+            self.slap_computer.reportNetDriveUsage(xml_data)
 
     def initializeDatabase(self, db_path):
         self._db = sqlite3.connect(db_path, isolation_level=None)
@@ -177,35 +193,35 @@ class NetDriveUsageReporter(object):
             usage_bytes INTEGER,
             remark TEXT)""")
 
-    def generateDailyReport(self, report_date=None, remove=False):
-        if report_date is None:
-            report_date = self._report_date
+    def generateDailyReport(self, config_id, computer_id, domain_account,
+                                  report_date, remove=True):
         q = self._db.execute
         root = etree.Element("report")
         computer = etree.Element("computer")
-        computer.text = self.computer_id        
+        computer.text = computer_id
         account = etree.Element("account")
-        account.text = self._domain_account
+        account.text = domain_account
         report_date = etree.Element("date")
-        report_date.text = self._report_date
+        report_date.text = report_date
         usage = etree.Element("usage")
         details = etree.Element("details")
         root.append(computer, account, report_date, usage, details)
         total = 0
         for r in q("SELECT duration, usage_bytes FROM net_drive_usage "
                    "WHERE config_id=? AND strftime('%Y-%m-%d', start)=?",
-                   (self._config_id, report_date)):
+                   (_config_id, report_date)):
             total += r[0] * r[1]
         usage.text = str(total)
         if remove:
             q("INSERT INTO net_drive_usage_history "
               "SELECT * FROM net_drive_usage "
               "WHERE config_id=? AND strftime('%Y-%m-%d', start)=?",
-              (self._config_id, report_date))
+              (_config_id, report_date))
             q("DELETE FROM net_drive_usage "
               "WHERE config_id=? AND strftime('%Y-%m-%d', start)=?",
-              (self._config_id, report_date))
-        return etree.tostring(root, xml_declaration=True)
+              (_config_id, report_date))
+        if total:
+            return etree.tostring(root, xml_declaration=True)
 
 def main():
     reporter = NetDriveUsageReporter(parseArgumentTuple())