diff --git a/src/channels/chan_voicemngr.c b/src/channels/chan_voicemngr.c
index fa53d86b91af15c454134a94797c35fb73d07371..d85332af31e32d0d2a09bc456b8df433e08fb19f 100644
--- a/src/channels/chan_voicemngr.c
+++ b/src/channels/chan_voicemngr.c
@@ -1272,7 +1272,7 @@ static int chan_voicemngr_finish_transfer(struct ast_channel *owner, struct chan
 	 * - Probably nothing else - the built-in transfer should never let this
 	 *   control frame propagate to here
 	 */
-	if (sub->channel_state != TRANSFERING) {
+	if (sub->channel_state != TRANSFERING && !(channel_config[sub->parent->line_id].flashSpec == FLASH_SPEC_ETSI && hold_target_before_refer && sub->channel_state == ONHOLD)) {
 		ast_log(LOG_WARNING, "Received AST_CONTROL_TRANSFER while in state %s\n", state2str(sub->channel_state));
 		return -1;
 	}