diff --git a/erpnext/hub_node/__init__.py b/erpnext/hub_node/__init__.py
index 6ac0aba..61676ad 100644
--- a/erpnext/hub_node/__init__.py
+++ b/erpnext/hub_node/__init__.py
@@ -73,14 +73,18 @@
 	if not len(items_to_publish):
 		return
 
-	for item_code in items_to_publish:
-		frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
+	# TODO: sync
+	# for item_code in items_to_publish:
+	# 	frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
+
+	# hub_settings = frappe.get_doc('Hub Settings')
+	# remote_id = item_sync_preprocess()
+	# hub_settings.sync(remote_id)
+
+	# return remote_id
 
 	hub_settings = frappe.get_doc('Hub Settings')
-	remote_id = item_sync_preprocess()
-	hub_settings.sync(remote_id)
-
-	return remote_id
+	hub_settings.sync('TEST')
 
 def item_sync_preprocess():
 	# Call Hub to make a new activity
@@ -108,6 +112,7 @@
 
 	if response:
 		frappe.db.set_value('Hub Settings', 'Hub Settings', 'sync_in_progress', 0)
+		frappe.db.set_value('Hub Settings', 'Hub Settings', 'last_sync_datetime', frappe.utils.now())
 	else:
 		frappe.throw('Unable to update remote activity')
 
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.json b/erpnext/hub_node/doctype/hub_settings/hub_settings.json
index 10bb959..a0d8188 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.json
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.json
@@ -538,7 +538,7 @@
    "bold": 0, 
    "collapsible": 0, 
    "columns": 0, 
-   "depends_on": "publish", 
+   "depends_on": "", 
    "fieldname": "last_sync_datetime", 
    "fieldtype": "Datetime", 
    "hidden": 0, 
@@ -555,7 +555,7 @@
    "precision": "", 
    "print_hide": 0, 
    "print_hide_if_no_value": 0, 
-   "read_only": 1, 
+   "read_only": 0, 
    "remember_last_selected_value": 0, 
    "report_hide": 0, 
    "reqd": 0, 
@@ -675,7 +675,7 @@
  "issingle": 1, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-07-30 08:01:09.024358", 
+ "modified": "2018-07-30 10:43:28.818498", 
  "modified_by": "Administrator", 
  "module": "Hub Node", 
  "name": "Hub Settings", 
diff --git a/erpnext/hub_node/doctype/hub_settings/hub_settings.py b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
index 66dd560..727ad62 100644
--- a/erpnext/hub_node/doctype/hub_settings/hub_settings.py
+++ b/erpnext/hub_node/doctype/hub_settings/hub_settings.py
@@ -37,12 +37,31 @@
 				'doctype': 'Data Migration Run',
 				'data_migration_plan': 'Hub Sync',
 				'data_migration_connector': 'Hub Connector',
-				'remote_id': remote_id
+				'remote_id': remote_id,
+				'trigger_name': 'items-sync'
 			}).insert()
 
-			self.sync_in_progress = 1
-			# time.sleep(10)
-			doc.run()
+			time.sleep(2)
+			frappe.publish_realtime('items-sync', {"progress_percent": 20})
+			print("=======================")
+
+			time.sleep(2)
+			frappe.publish_realtime('items-sync', {"progress_percent": 40})
+			print("=======================")
+
+			time.sleep(1)
+			frappe.publish_realtime('items-sync', {"progress_percent": 80})
+			print("=======================")
+
+			time.sleep(2)
+			frappe.publish_realtime('items-sync', {"progress_percent": 100})
+			print("=======================")
+
+			frappe.db.set_value('Hub Settings', 'Hub Settings', 'last_sync_datetime', frappe.utils.now())
+
+			# TODO: sync
+			# self.sync_in_progress = 1
+			# doc.run()
 		else:
 			frappe.throw("No remote ID specified")
 
diff --git a/erpnext/public/js/hub/marketplace.js b/erpnext/public/js/hub/marketplace.js
index 28309f3..703da1f 100644
--- a/erpnext/public/js/hub/marketplace.js
+++ b/erpnext/public/js/hub/marketplace.js
@@ -828,6 +828,21 @@
 		this.items_to_publish = [];
 		this.unpublished_items = [];
 		this.fetched_items = [];
+
+		frappe.realtime.on("items-sync", (data) => {
+			this.$wrapper.find('.progress-bar').css('width', data.progress_percent+'%');
+
+			if(data.progress_percent === 100) {
+				setTimeout(() => {
+					hub.settings.sync_in_progress = 0;
+					frappe.db.get_doc('Hub Settings')
+						.then(doc => {
+							hub.settings = doc;
+							this.refresh();
+						});
+				}, 500);
+			}
+		});
 	}
 
 	refresh() {
@@ -853,8 +868,8 @@
 
 		this.setup_publishing_events();
 
-		if(hub.settings.last_sync) {
-			this.show_message(`Last sync was <a href="#marketplace/profile">${hub.settings.last_sync}</a>.
+		if(hub.settings.last_sync_datetime) {
+			this.show_message(`Last sync was <a href="#marketplace/profile">${hub.settings.last_sync_datetime}</a>.
 				<a href="#marketplace/my-products">See your Published Products</a>.`);
 		}
 
@@ -962,7 +977,7 @@
 		const $publish_progress = $(`<div class="sync-progress">
 			<p><b>${__(`Syncing ${items_to_publish.length} Products`)}</b></p>
 			<div class="progress">
-				<div class="progress-bar" style="width: 12.875%"></div>
+				<div class="progress-bar" style="width: 1%"></div>
 			</div>
 
 		</div>`);
@@ -1026,16 +1041,17 @@
 
 		return frappe.db.set_value("Hub Settings", "Hub Settings", {
 			custom_data: JSON.stringify(items_to_publish),
+			// TODO: sync
 			// sync_in_progress: 1
 		}).then(() => {
 			hub.settings.sync_in_progress = 1;
 		})
-		// .then(frappe.call(
-		// 	'erpnext.hub_node.publish_selected_items',
-		// 	{
-		// 		items_to_publish: item_codes_to_publish
-		// 	}
-		// ));
+		.then(frappe.call(
+			'erpnext.hub_node.publish_selected_items',
+			{
+				items_to_publish: item_codes_to_publish
+			}
+		));
 	}
 }
 
