diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 0bb102b63f6075d5119f47263ca9f079d2add451..b28fce3559c12e66c191f86fdb957ca5b7bb2a0d 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -2980,9 +2980,6 @@ static void *mgcp_ss(void *data)
 	int getforward = 0;
 	int loop_pause = 100;
 	RAII_VAR(struct ast_features_pickup_config *, pickup_cfg, NULL, ao2_cleanup);
-	RAII_VAR(struct ast_parking_bridge_feature_fn_table *, parking_provider,
-		ast_parking_get_bridge_features(),
-		ao2_cleanup);
 	const char *pickupexten;
 
 	len = strlen(p->dtmf_buf);
@@ -3151,7 +3148,7 @@ static void *mgcp_ss(void *data)
 			getforward = 0;
 			memset(p->dtmf_buf, 0, sizeof(p->dtmf_buf));
 			len = 0;
-		} else if (parking_provider && parking_provider->parking_is_exten_park(ast_channel_context(chan), p->dtmf_buf) &&
+		} else if (ast_parking_provider_registered() && ast_parking_is_exten_park(ast_channel_context(chan), p->dtmf_buf) &&
 			sub->next->owner) {
 			RAII_VAR(struct ast_bridge_channel *, bridge_channel, NULL, ao2_cleanup);
 			/* This is a three way call, the main call being a real channel,
@@ -3159,7 +3156,7 @@ static void *mgcp_ss(void *data)
 			ast_channel_lock(chan);
 			bridge_channel = ast_channel_get_bridge_channel(chan);
 			ast_channel_unlock(chan);
-			if (bridge_channel && !parking_provider->parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), p->dtmf_buf)) {
+			if (bridge_channel && !ast_parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), p->dtmf_buf)) {
 				ast_verb(3, "Parking call to '%s'\n", ast_channel_name(chan));
 			}
 			break;