diff --git a/openbsc/src/bsc/osmo_bsc_api.c b/openbsc/src/bsc/osmo_bsc_api.c
index 84c2d6e..b8423b2 100644
--- a/openbsc/src/bsc/osmo_bsc_api.c
+++ b/openbsc/src/bsc/osmo_bsc_api.c
@@ -19,6 +19,7 @@
  */
 
 #include <openbsc/osmo_bsc.h>
+#include <openbsc/osmo_msc_data.h>
 #include <openbsc/debug.h>
 
 #include <osmocore/protocol/gsm_08_08.h>
@@ -43,6 +44,20 @@
 	} \
 	bsc_queue_for_msc(conn, resp);
 
+static uint16_t get_network_code_for_msc(struct gsm_network *net)
+{
+	if (net->msc_data->core_ncc != -1)
+		return net->msc_data->core_ncc;
+	return net->network_code;
+}
+
+static uint16_t get_country_code_for_msc(struct gsm_network *net)
+{
+	if (net->msc_data->core_mcc != -1)
+		return net->msc_data->core_mcc;
+	return net->country_code;
+}
+
 static void bsc_sapi_n_reject(struct gsm_subscriber_connection *conn, int dlci)
 {
 	struct msgb *resp;
@@ -63,15 +78,38 @@
 	queue_msg_or_return(resp);
 }
 
+/*
+ * Instruct to reserve data for a new connectiom, create the complete
+ * layer three message, send it to open the connection.
+ */
 static int bsc_compl_l3(struct gsm_subscriber_connection *conn, struct msgb *msg,
 			uint16_t chosen_channel)
 {
-	if (bsc_create_new_connection(conn, msg, chosen_channel) == 0) {
-		bsc_scan_bts_msg(conn, msg);
-		return BSC_API_CONN_POL_ACCEPT;
+	struct msgb *resp;
+	uint16_t network_code = get_network_code_for_msc(conn->bts->network);
+	uint16_t country_code = get_country_code_for_msc(conn->bts->network);
+
+	/* allocate resource for a new connection */
+	if (bsc_create_new_connection(conn) != 0)
+		return BSC_API_CONN_POL_REJECT;
+
+	bsc_scan_bts_msg(conn, msg);
+	resp = gsm0808_create_layer3(msg, network_code, country_code,
+				     conn->bts->location_area_code,
+				     conn->bts->cell_identity);
+	if (!resp) {
+		LOGP(DMSC, LOGL_DEBUG, "Failed to create layer3 message.\n");
+		bsc_delete_connection(conn);
+		return BSC_API_CONN_POL_REJECT;
 	}
 
-	return BSC_API_CONN_POL_REJECT;
+	if (bsc_open_connection(conn, resp) != 0) {
+		bsc_delete_connection(conn);
+		msgb_free(resp);
+		return BSC_API_CONN_POL_REJECT;
+	}
+
+	return BSC_API_CONN_POL_ACCEPT;
 }
 
 static void bsc_dtap(struct gsm_subscriber_connection *conn, uint8_t link_id, struct msgb *msg)
diff --git a/openbsc/src/bsc/osmo_bsc_sccp.c b/openbsc/src/bsc/osmo_bsc_sccp.c
index 694a30f..d1fff91 100644
--- a/openbsc/src/bsc/osmo_bsc_sccp.c
+++ b/openbsc/src/bsc/osmo_bsc_sccp.c
@@ -25,6 +25,7 @@
 #include <openbsc/debug.h>
 
 #include <osmocore/gsm0808.h>
+#include <osmocore/talloc.h>
 #include <osmocore/protocol/gsm_08_08.h>
 
 #include <osmocom/sccp/sccp.h>
@@ -75,13 +76,28 @@
 	return 0;
 }
 
-int bsc_create_new_connection(struct gsm_subscriber_connection *conn,
-			      struct msgb *msg, uint16_t chosen_channel)
+int bsc_create_new_connection(struct gsm_subscriber_connection *conn)
 {
 	LOGP(DMSC, LOGL_ERROR, "Not implemented yet.\n");
 	return -1;
 }
 
+int bsc_open_connection(struct gsm_subscriber_connection *conn, struct msgb *msg)
+{
+	LOGP(DMSC, LOGL_ERROR, "Not implemented yet.\n");
+	return -1;
+}
+
+int bsc_delete_connection(struct gsm_subscriber_connection *conn)
+{
+	if (!conn->sccp_con)
+		return 0;
+
+	talloc_free(conn->sccp_con);
+	conn->sccp_con = NULL;
+	return 0;
+}
+
 int osmo_bsc_sccp_init(struct gsm_network *gsmnet)
 {
 	sccp_set_log_area(DSCCP);
