diff --git a/openbsc/include/openbsc/db.h b/openbsc/include/openbsc/db.h
index 25c2aea..a89c22d 100644
--- a/openbsc/include/openbsc/db.h
+++ b/openbsc/include/openbsc/db.h
@@ -35,10 +35,8 @@
 int db_fini(void);
 
 /* subscriber management */
-struct gsm_subscriber *db_create_subscriber(struct gsm_network *net,
-					    char *imsi);
-struct gsm_subscriber *db_get_subscriber(struct gsm_network *net,
-					 enum gsm_subscriber_field field,
+struct gsm_subscriber *db_create_subscriber(const char *imsi);
+struct gsm_subscriber *db_get_subscriber(enum gsm_subscriber_field field,
 					 const char *subscr);
 int db_sync_subscriber(struct gsm_subscriber *subscriber);
 int db_subscriber_expire(void *priv, void (*callback)(void *priv, long long unsigned int id));
diff --git a/openbsc/include/openbsc/gsm_subscriber.h b/openbsc/include/openbsc/gsm_subscriber.h
index 6b577b0..7aae4c3 100644
--- a/openbsc/include/openbsc/gsm_subscriber.h
+++ b/openbsc/include/openbsc/gsm_subscriber.h
@@ -73,6 +73,8 @@
 
 struct gsm_subscriber *subscr_get(struct gsm_subscriber *subscr);
 struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr);
+struct gsm_subscriber *subscr_create_subscriber(struct gsm_network *net,
+						const char *imsi);
 struct gsm_subscriber *subscr_get_by_tmsi(struct gsm_network *net,
 					  uint32_t tmsi);
 struct gsm_subscriber *subscr_get_by_imsi(struct gsm_network *net,
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);
diff --git a/openbsc/tests/db/db_test.c b/openbsc/tests/db/db_test.c
index c3beee2..3c5de90 100644
--- a/openbsc/tests/db/db_test.c
+++ b/openbsc/tests/db/db_test.c
@@ -78,32 +78,32 @@
 	struct gsm_subscriber *alice_db;
 
 	char *alice_imsi = "3243245432345";
-	alice = db_create_subscriber(NULL, alice_imsi);
+	alice = db_create_subscriber(alice_imsi);
 	db_sync_subscriber(alice);
-	alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice->imsi);
+	alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice->imsi);
 	COMPARE(alice, alice_db);
 	SUBSCR_PUT(alice_db);
 	SUBSCR_PUT(alice);
 
 	alice_imsi = "3693245423445";
-	alice = db_create_subscriber(NULL, alice_imsi);
+	alice = db_create_subscriber(alice_imsi);
 	db_subscriber_assoc_imei(alice, "1234567890");
 	db_subscriber_alloc_tmsi(alice);
 	alice->lac=42;
 	db_sync_subscriber(alice);
-	alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi);
+	alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice_imsi);
 	COMPARE(alice, alice_db);
 	SUBSCR_PUT(alice);
 	SUBSCR_PUT(alice_db);
 
 	alice_imsi = "9993245423445";
-	alice = db_create_subscriber(NULL, alice_imsi);
+	alice = db_create_subscriber(alice_imsi);
 	db_subscriber_alloc_tmsi(alice);
 	alice->lac=42;
 	db_sync_subscriber(alice);
 	db_subscriber_assoc_imei(alice, "1234567890");
 	db_subscriber_assoc_imei(alice, "6543560920");
-	alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi);
+	alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice_imsi);
 	COMPARE(alice, alice_db);
 	SUBSCR_PUT(alice);
 	SUBSCR_PUT(alice_db);
