diff --git a/doc/man/man5/slurm.conf.5 b/doc/man/man5/slurm.conf.5
index f3bd7d2aee1c3995a111a00a2271d386aefd48b0..477f6394f5158ad022482cd00ae67a06341a270d 100644
--- a/doc/man/man5/slurm.conf.5
+++ b/doc/man/man5/slurm.conf.5
@@ -956,6 +956,17 @@ Specifies that small jobs should be given preferential scheduling priority.
 Applicable only if PriorityType=priority/multifactor.
 Supported values are "YES" and "NO".  The default value is "NO".
 
+.TP
+\fBPriorityFlags\fR
+Flags to modify priority behavior
+Applicable only if PriorityType=priority/multifactor.
+.RS
+.TP 17
+\fBACCRUE_ALWAYS\fR
+If set, priority age factor will be increased despite job dependencies 
+or holds.
+.RE
+
 .TP
 \fBPriorityMaxAge\fR
 Specifies the job age which will be given the maximum age factor in computing
diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index 00c90155e47b3daccab17152b9848d0890a875c8..06a14e6187b6790e77952089340a68a2afd1aae2 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -588,6 +588,12 @@ enum ctx_keys {
 #define PROP_PRIO_NICER		0x0002	/* Insure that user tasks have a nice
 					 * value that is higher than slurmd */
 
+enum prioflags{
+
+	PRIORITY_FLAGS_ACCRUE_ALWAYS = 1, /* Flag to always accrue age priority to pending jobs ignoring dependencies or holds */
+
+};
+
 /*****************************************************************************\
  *      SLURM HOSTLIST FUNCTIONS
 \*****************************************************************************/
@@ -1860,6 +1866,7 @@ typedef struct slurm_ctl_conf {
 	uint32_t priority_calc_period; /* seconds between priority decay
 					* calculation */
 	uint16_t priority_favor_small; /* favor small jobs over large */
+	uint16_t priority_flags; /* set some flags for priority configuration */
 	uint32_t priority_max_age; /* time when not to add any more
 				    * priority to a job if reached */
 	uint16_t priority_reset_period; /* when to clear usage,
diff --git a/src/common/read_config.c b/src/common/read_config.c
index 4098995718081902d858982365b2f947f3e35771..1c3dca435a203115320ef26ca2b78fd7ea837d7a 100644
--- a/src/common/read_config.c
+++ b/src/common/read_config.c
@@ -227,6 +227,7 @@ s_p_options_t slurm_conf_options[] = {
 	{"PriorityMaxAge", S_P_STRING},
 	{"PriorityUsageResetPeriod", S_P_STRING},
 	{"PriorityType", S_P_STRING},
+	{"PriorityFlags", S_P_STRING},
 	{"PriorityWeightAge", S_P_UINT32},
 	{"PriorityWeightFairshare", S_P_UINT32},
 	{"PriorityWeightJobSize", S_P_UINT32},
@@ -2808,6 +2809,11 @@ _validate_and_set_defaults(slurm_ctl_conf_t *conf, s_p_hashtbl_t *hashtbl)
 	else
 		conf->priority_favor_small = 0;
 
+	conf->priority_flags = 0;
+	if (s_p_get_string(&temp_str, "PriorityFlags", hashtbl)) {
+		if (strstr(temp_str, "ACCRUE_ALWAYS"))
+			conf->priority_flags |= PRIORITY_FLAGS_ACCRUE_ALWAYS;
+	}		
 	if (s_p_get_string(&temp_str, "PriorityMaxAge", hashtbl)) {
 		int max_time = time_str2mins(temp_str);
 		if ((max_time < 0) && (max_time != INFINITE)) {
diff --git a/src/plugins/priority/multifactor/priority_multifactor.c b/src/plugins/priority/multifactor/priority_multifactor.c
index 0786eb3c4c08780eb1d069973144c3f6603a7cfe..703b361435b5a6905203f8d56261784dca4a9417 100644
--- a/src/plugins/priority/multifactor/priority_multifactor.c
+++ b/src/plugins/priority/multifactor/priority_multifactor.c
@@ -128,6 +128,7 @@ static uint32_t weight_fs; /* weight for Fairshare factor */
 static uint32_t weight_js; /* weight for Job Size factor */
 static uint32_t weight_part; /* weight for Partition factor */
 static uint32_t weight_qos; /* weight for QOS factor */
+static uint32_t flags; /* Priority Flags */
 
 extern void priority_p_set_assoc_usage(slurmdb_association_rec_t *assoc);
 extern double priority_p_calc_fs_factor(long double usage_efctv,
@@ -459,12 +460,19 @@ static void _get_priority_factors(time_t start_time, struct job_record *job_ptr)
 
 	if (weight_age) {
 		uint32_t diff = start_time - job_ptr->details->begin_time;
+		if(flags & PRIORITY_FLAGS_ACCRUE_ALWAYS) diff = start_time - job_ptr->details->submit_time;
 		if (job_ptr->details->begin_time) {
 			if (diff < max_age)
 				job_ptr->prio_factors->priority_age =
 					(double)diff / (double)max_age;
 			else
 				job_ptr->prio_factors->priority_age = 1.0;
+		}else if(flags & PRIORITY_FLAGS_ACCRUE_ALWAYS){
+		 	if (diff < max_age)
+			 	job_ptr->prio_factors->priority_age =
+			  	(double)diff / (double)max_age;
+			else
+			 	job_ptr->prio_factors->priority_age = 1.0;
 		}
 	}
 
@@ -1129,6 +1137,7 @@ static void _internal_setup(void)
 	weight_js = slurm_get_priority_weight_job_size();
 	weight_part = slurm_get_priority_weight_partition();
 	weight_qos = slurm_get_priority_weight_qos();
+	flags = slurmctld_conf.priority_flags;
 
 	if (priority_debug) {
 		info("priority: Max Age is %u", max_age);
@@ -1137,6 +1146,7 @@ static void _internal_setup(void)
 		info("priority: Weight JobSize is %u", weight_js);
 		info("priority: Weight Part is %u", weight_part);
 		info("priority: Weight QOS is %u", weight_qos);
+		info("priority: Flags is %u", flags);
 	}
 }