diff --git a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js
index 07a8009..218424b 100644
--- a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js
+++ b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.js
@@ -1,8 +1,13 @@
 // Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
 
-// frappe.ui.form.on("Bulk Transaction Log", {
-// 	refresh(frm) {
-
-// 	},
-// });
+frappe.ui.form.on("Bulk Transaction Log", {
+	refresh(frm) {
+		frm.add_custom_button(__('Succeeded Entries'), function() {
+			frappe.set_route('List', 'Bulk Transaction Log Detail', {'date': frm.doc.date, 'transaction_status': "Success"});
+		}, __("View"));
+		frm.add_custom_button(__('Failed Entries'), function() {
+			frappe.set_route('List', 'Bulk Transaction Log Detail', {'date': frm.doc.date, 'transaction_status': "Failed"});
+		}, __("View"));
+	},
+});
diff --git a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
index fb9fcf7..4febb48 100644
--- a/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
+++ b/erpnext/bulk_transaction/doctype/bulk_transaction_log/bulk_transaction_log.py
@@ -1,8 +1,14 @@
 # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
-# import frappe
+import frappe
+from frappe import qb
 from frappe.model.document import Document
+from frappe.query_builder.functions import Count
+from frappe.utils import cint
+from pypika import Order
+
+log_detail = qb.DocType("Bulk Transaction Log Detail")
 
 
 class BulkTransactionLog(Document):
@@ -10,14 +16,51 @@
 		pass
 
 	def load_from_db(self):
-		pass
-
-	def db_update(self):
-		pass
+		succeeded_logs = (
+			qb.from_(log_detail)
+			.select(Count(log_detail.date).as_("count"))
+			.where((log_detail.date == self.name) & (log_detail.transaction_status == "Success"))
+			.run()
+		)[0][0] or 0
+		failed_logs = (
+			qb.from_(log_detail)
+			.select(Count(log_detail.date).as_("count"))
+			.where((log_detail.date == self.name) & (log_detail.transaction_status == "Failed"))
+			.run()
+		)[0][0] or 0
+		total_logs = succeeded_logs + failed_logs
+		transaction_log = frappe._dict(
+			{
+				"date": self.name,
+				"count": total_logs,
+				"succeeded": succeeded_logs,
+				"failed": failed_logs,
+			}
+		)
+		super(Document, self).__init__(serialize_transaction_log(transaction_log))
 
 	@staticmethod
 	def get_list(args):
-		pass
+		limit = cint(args.get("page_length")) or 20
+		dates = (
+			qb.from_(log_detail)
+			.select(log_detail.date)
+			.distinct()
+			.orderby(log_detail.date, order=Order.desc)
+			.limit(limit)
+			.run()
+		)
+
+		transaction_logs = (
+			qb.from_(log_detail)
+			.select(log_detail.date.as_("date"), Count(log_detail.date).as_("count"))
+			.where(log_detail.date.isin(dates))
+			.orderby(log_detail.date, order=Order.desc)
+			.groupby(log_detail.date)
+			.limit(limit)
+			.run(as_dict=True)
+		)
+		return [serialize_transaction_log(x) for x in transaction_logs]
 
 	@staticmethod
 	def get_count(args):
@@ -26,3 +69,19 @@
 	@staticmethod
 	def get_stats(args):
 		pass
+
+	def db_update(self, *args, **kwargs):
+		pass
+
+	def delete(self):
+		pass
+
+
+def serialize_transaction_log(data):
+	return frappe._dict(
+		name=data.date,
+		date=data.date,
+		log_entries=data.count,
+		succeeded=data.succeeded,
+		failed=data.failed,
+	)
