diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c
index 9a8cd88..d179c4e 100644
--- a/openbsc/src/libmsc/db.c
+++ b/openbsc/src/libmsc/db.c
@@ -315,13 +315,13 @@
 	return 0;
 }
 
-struct gsm_subscriber *db_create_subscriber(struct gsm_network *net, char *imsi)
+struct gsm_subscriber *db_create_subscriber(const char *imsi)
 {
 	dbi_result result;
 	struct gsm_subscriber *subscr;
 
 	/* Is this subscriber known in the db? */
-	subscr = db_get_subscriber(net, GSM_SUBSCRIBER_IMSI, imsi);
+	subscr = db_get_subscriber(GSM_SUBSCRIBER_IMSI, imsi);
 	if (subscr) {
 		result = dbi_conn_queryf(conn,
                          "UPDATE Subscriber set updated = datetime('now') "
@@ -346,7 +346,6 @@
 	);
 	if (!result)
 		LOGP(DDB, LOGL_ERROR, "Failed to create Subscriber by IMSI.\n");
-	subscr->net = net;
 	subscr->id = dbi_conn_sequence_last(conn, NULL);
 	strncpy(subscr->imsi, imsi, GSM_IMSI_LENGTH-1);
 	dbi_result_free(result);
@@ -645,8 +644,7 @@
 }
 
 #define BASE_QUERY "SELECT * FROM Subscriber "
-struct gsm_subscriber *db_get_subscriber(struct gsm_network *net,
-					 enum gsm_subscriber_field field,
+struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field,
 					 const char *id)
 {
 	dbi_result result;
@@ -704,7 +702,6 @@
 	}
 
 	subscr = subscr_alloc();
-	subscr->net = net;
 	subscr->id = dbi_result_get_ulonglong(result, "id");
 
 	db_set_from_query(subscr, result);
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index a299590..c41443e 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -474,7 +474,7 @@
 		if (!conn->subscr) {
 			conn->subscr = subscr_get_by_imsi(net, mi_string);
 			if (!conn->subscr)
-				conn->subscr = db_create_subscriber(net, mi_string);
+				conn->subscr = subscr_create_subscriber(net, mi_string);
 		}
 		if (conn->loc_operation)
 			conn->loc_operation->waiting_for_imsi = 0;
@@ -586,7 +586,7 @@
 		/* look up subscriber based on IMSI, create if not found */
 		subscr = subscr_get_by_imsi(bts->network, mi_string);
 		if (!subscr) {
-			subscr = db_create_subscriber(bts->network, mi_string);
+			subscr = subscr_create_subscriber(bts->network, mi_string);
 		}
 		break;
 	case GSM_MI_TYPE_TMSI:
diff --git a/openbsc/src/libmsc/gsm_subscriber.c b/openbsc/src/libmsc/gsm_subscriber.c
index 5ace8f6..bc6f3cf 100644
--- a/openbsc/src/libmsc/gsm_subscriber.c
+++ b/openbsc/src/libmsc/gsm_subscriber.c
@@ -78,6 +78,15 @@
 	REQ_STATE_DISPATCHED,
 };
 
+static struct gsm_subscriber *get_subscriber(struct gsm_network *net,
+						int type, const char *ident)
+{
+	struct gsm_subscriber *subscr = db_get_subscriber(type, ident);
+	if (subscr)
+		subscr->net = net;
+	return subscr;
+}
+
 /*
  * We got the channel assigned and can now hand this channel
  * over to one of our callbacks.
@@ -266,6 +275,14 @@
 		subscr_send_paging_request(subscr);
 }
 
+struct gsm_subscriber *subscr_create_subscriber(struct gsm_network *net,
+					const char *imsi)
+{
+	struct gsm_subscriber *subscr = db_create_subscriber(imsi);
+	if (subscr)
+		subscr->net = net;
+	return subscr;
+}
 
 struct gsm_subscriber *subscr_get_by_tmsi(struct gsm_network *net,
 					  uint32_t tmsi)
@@ -280,7 +297,7 @@
 	}
 
 	sprintf(tmsi_string, "%u", tmsi);
-	return db_get_subscriber(net, GSM_SUBSCRIBER_TMSI, tmsi_string);
+	return get_subscriber(net, GSM_SUBSCRIBER_TMSI, tmsi_string);
 }
 
 struct gsm_subscriber *subscr_get_by_imsi(struct gsm_network *net,
@@ -293,7 +310,7 @@
 			return subscr_get(subscr);
 	}
 
-	return db_get_subscriber(net, GSM_SUBSCRIBER_IMSI, imsi);
+	return get_subscriber(net, GSM_SUBSCRIBER_IMSI, imsi);
 }
 
 struct gsm_subscriber *subscr_get_by_extension(struct gsm_network *net,
@@ -306,7 +323,7 @@
 			return subscr_get(subscr);
 	}
 
-	return db_get_subscriber(net, GSM_SUBSCRIBER_EXTENSION, ext);
+	return get_subscriber(net, GSM_SUBSCRIBER_EXTENSION, ext);
 }
 
 struct gsm_subscriber *subscr_get_by_id(struct gsm_network *net,
@@ -321,7 +338,7 @@
 			return subscr_get(subscr);
 	}
 
-	return db_get_subscriber(net, GSM_SUBSCRIBER_ID, buf);
+	return get_subscriber(net, GSM_SUBSCRIBER_ID, buf);
 }
 
 int subscr_update_expire_lu(struct gsm_subscriber *s, struct gsm_bts *bts)
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index acb4af7..e0324d6 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -229,7 +229,7 @@
 	struct gsm_network *gsmnet = gsmnet_from_vty(vty);
 	struct gsm_subscriber *subscr;
 
-	subscr = db_create_subscriber(gsmnet, argv[0]);
+	subscr = subscr_create_subscriber(gsmnet, argv[0]);
 	if (!subscr) {
 		vty_out(vty, "%% No subscriber created for IMSI %s%s",
 			argv[0], VTY_NEWLINE);
