diff --git a/include/zbx_rtc_constants.h b/include/zbx_rtc_constants.h
index 27c739f7b55..09f2054de8d 100644
--- a/include/zbx_rtc_constants.h
+++ b/include/zbx_rtc_constants.h
@@ -47,6 +47,7 @@
 #define ZBX_RTC_SERVICE_SYNC_NOTIFY		9998
 #define ZBX_RTC_HISTORY_SYNC_NOTIFY		9997
 #define ZBX_RTC_ESCALATOR_NOTIFY		9996
+#define ZBX_RTC_TASK_MANAGER_NOTIFY		9995
 
 #define ZBX_IPC_RTC_MAX				9999
 
diff --git a/src/zabbix_proxy/datasender/datasender.c b/src/zabbix_proxy/datasender/datasender.c
index b3f5265f2be..bb075b6d7d4 100644
--- a/src/zabbix_proxy/datasender/datasender.c
+++ b/src/zabbix_proxy/datasender/datasender.c
@@ -29,6 +29,8 @@
 #include "zbxcacheconfig.h"
 #include "zbxdbhigh.h"
 #include "zbxtypes.h"
+#include "zbxrtc.h"
+#include "zbx_rtc_constants.h"
 
 #define ZBX_DATASENDER_AVAILABILITY		0x0001
 #define ZBX_DATASENDER_HISTORY			0x0002
@@ -76,7 +78,7 @@ static void	get_hist_upload_state(const char *buffer, int *state)
  *          data and sends 'proxy data' request                               *
  *                                                                            *
  ******************************************************************************/
-static int	proxy_data_sender(int *more, int now, int *hist_upload_state, const zbx_thread_info_t *info,
+static int	proxy_data_sender(int *more, int now, int *hist_upload_state, int *new_tasks, const zbx_thread_info_t *info,
 		zbx_thread_datasender_args *args)
 {
 	static int		data_timestamp = 0, task_timestamp = 0, upload_state = SUCCEED;
@@ -235,6 +237,7 @@ static int	proxy_data_sender(int *more, int now, int *hist_upload_state, const z
 				if (0 != (flags & ZBX_DATASENDER_TASKS_RECV))
 				{
 					zbx_tm_json_deserialize_tasks(&jp_tasks, &tasks);
+					*new_tasks = tasks.values_num;
 					zbx_tm_save_tasks(&tasks);
 				}
 
@@ -304,6 +307,17 @@ ZBX_THREAD_ENTRY(datasender_thread, args)
 #endif
 	zbx_setproctitle("%s [connecting to the database]", get_process_type_string(process_type));
 
+	zbx_ipc_async_socket_t		rtc;
+
+	char	*error = NULL;
+
+	if (FAIL == zbx_ipc_async_socket_open(&rtc, ZBX_IPC_SERVICE_RTC, 30, &error))
+	{
+		zabbix_log(LOG_LEVEL_CRIT, "cannot open socket from service manager to"
+				" rtc: %s", error);
+		zbx_free(error);
+	}
+
 	zbx_db_connect(ZBX_DB_CONNECT_NORMAL);
 
 	while (ZBX_IS_RUNNING())
@@ -316,16 +330,25 @@ ZBX_THREAD_ENTRY(datasender_thread, args)
 
 		records = 0;
 		time_start = time_now;
+		int	new_tasks = 0;
 
 		do
 		{
-			records += proxy_data_sender(&more, (int)time_now, &hist_upload_state, info,
+			
+
+			records += proxy_data_sender(&more, (int)time_now, &hist_upload_state, &new_tasks, info,
 					datasender_args_in);
 
 			time_now = zbx_time();
 			time_diff = time_now - time_start;
 		}
 		while (ZBX_PROXY_DATA_MORE == more && time_diff < SEC_PER_MIN && ZBX_IS_RUNNING());
+	
+		if (0 != new_tasks)
+		{
+			zbx_rtc_notify_generic(&rtc, ZBX_PROCESS_TYPE_TASKMANAGER, 1,
+					ZBX_RTC_TASK_MANAGER_NOTIFY, NULL, 0);
+		}
 
 		zbx_setproctitle("%s [sent %d values in " ZBX_FS_DBL " sec, idle %d sec]",
 				get_process_type_string(process_type), records, time_diff,
diff --git a/src/zabbix_proxy/taskmanager/taskmanager_proxy.c b/src/zabbix_proxy/taskmanager/taskmanager_proxy.c
index 6eaa1cd0134..ab7d818604e 100644
--- a/src/zabbix_proxy/taskmanager/taskmanager_proxy.c
+++ b/src/zabbix_proxy/taskmanager/taskmanager_proxy.c
@@ -542,11 +542,12 @@ ZBX_THREAD_ENTRY(taskmanager_thread, args)
 	double				sec1, sec2;
 	zbx_ipc_async_socket_t		rtc;
 	const zbx_thread_info_t		*info = &((zbx_thread_args_t *)args)->info;
-	int				tasks_num, rtc_msgs_num = 1,
+	int				tasks_num, rtc_msgs_num = 2,
 					server_num = ((zbx_thread_args_t *)args)->info.server_num,
 					process_num = ((zbx_thread_args_t *)args)->info.process_num;
 	unsigned char			process_type = ((zbx_thread_args_t *)args)->info.process_type;
-	zbx_uint32_t			rtc_msgs[] = {ZBX_RTC_CONFIG_CACHE_RELOAD, ZBX_RTC_SNMP_CACHE_RELOAD};
+	zbx_uint32_t			rtc_msgs[] = {ZBX_RTC_CONFIG_CACHE_RELOAD, ZBX_RTC_TASK_MANAGER_NOTIFY,
+					ZBX_RTC_SNMP_CACHE_RELOAD};
 
 	zabbix_log(LOG_LEVEL_INFORMATION, "%s #%d started [%s #%d]", get_program_type_string(info->program_type),
 			server_num, get_process_type_string(process_type), process_num);
@@ -571,7 +572,7 @@ ZBX_THREAD_ENTRY(taskmanager_thread, args)
 	rtc_msgs_num++;
 #endif
 
-	zbx_rtc_subscribe(process_type, process_num, rtc_msgs,rtc_msgs_num,
+	zbx_rtc_subscribe(process_type, process_num, rtc_msgs, rtc_msgs_num,
 			taskmanager_args_in->config_comms->config_timeout, &rtc);
 
 	while (ZBX_IS_RUNNING())
