Index: gwlib/cfg.def
===================================================================
--- gwlib/cfg.def	(revision 33)
+++ gwlib/cfg.def	(working copy)
@@ -295,6 +295,7 @@
 MULTI_GROUP(smsc,
     OCTSTR(smsc)
     OCTSTR(smsc-id)
+    OCTSTR(smsc-admin-id)
     OCTSTR(denied-smsc-id)
     OCTSTR(allowed-smsc-id)
     OCTSTR(preferred-smsc-id)
Index: gw/bb_smscconn.c
===================================================================
--- gw/bb_smscconn.c	(revision 33)
+++ gw/bb_smscconn.c	(working copy)
@@ -690,7 +690,7 @@
 
     for (i = start; i < gwlist_len(smsc_list); i++) {
         conn = gwlist_get(smsc_list, i);
-        if (conn != NULL && octstr_compare(conn->id, id) == 0) {
+        if (conn != NULL && octstr_compare(conn->admin_id, id) == 0) {
             break;
         }
     }
@@ -914,6 +914,7 @@
     SMSCConn *conn;
     StatusInfo info;
     const Octstr *conn_id = NULL;
+    const Octstr *conn_admin_id = NULL;
     const Octstr *conn_name = NULL;
 
     if ((lb = bb_status_linebreak(status_type)) == NULL)
@@ -949,22 +950,29 @@
 
         conn_id = conn ? smscconn_id(conn) : octstr_imm("unknown");
         conn_id = conn_id ? conn_id : octstr_imm("unknown");
+        conn_admin_id = conn ? smscconn_admin_id(conn) : octstr_imm("unknown");
+        conn_admin_id = conn_admin_id ? conn_admin_id : octstr_imm("unknown");
         conn_name = conn ? smscconn_name(conn) : octstr_imm("unknown");
 
         if (status_type == BBSTATUS_HTML) {
             octstr_append_cstr(tmp, "&nbsp;&nbsp;&nbsp;&nbsp;<b>");
             octstr_append(tmp, conn_id);
-            octstr_append_cstr(tmp, "</b>&nbsp;&nbsp;&nbsp;&nbsp;");
+            octstr_append_cstr(tmp, "</b>[");
+            octstr_append(tmp, conn_admin_id);
+            octstr_append_cstr(tmp, "]&nbsp;&nbsp;&nbsp;&nbsp;");
         } else if (status_type == BBSTATUS_TEXT) {
             octstr_append_cstr(tmp, "    ");
             octstr_append(tmp, conn_id);
-            octstr_append_cstr(tmp, "    ");
+            octstr_append_cstr(tmp, "[");
+            octstr_append(tmp, conn_admin_id);
+            octstr_append_cstr(tmp, "]    ");
         } 
         if (status_type == BBSTATUS_XML) {
             octstr_append_cstr(tmp, "<smsc>\n\t\t<name>");
             octstr_append(tmp, conn_name);
-            octstr_append_cstr(tmp, "</name>\n\t\t");
-            octstr_append_cstr(tmp, "<id>");
+            octstr_append_cstr(tmp, "</name>\n\t\t<admin-id>");
+            octstr_append(tmp, conn_admin_id);
+            octstr_append_cstr(tmp, "</admin-id>\n\t\t<id>");
             octstr_append(tmp, conn_id);
             octstr_append_cstr(tmp, "</id>\n\t\t");
         } else
Index: gw/smscconn.c
===================================================================
--- gw/smscconn.c	(revision 32)
+++ gw/smscconn.c	(working copy)
@@ -222,6 +222,10 @@
         octstr_destroy(tmp);
         info(0, "Set throughput to %.3f for smsc id <%s>", conn->throughput, octstr_get_cstr(conn->id));
     }
+    /* Sets the admin_id. Equals to connection id if empty */
+    GET_OPTIONAL_VAL(conn->admin_id, "smsc-admin-id");
+    if (conn->admin_id == NULL)
+        conn->admin_id = octstr_duplicate(conn->id);
 
     /* configure the internal rerouting rules for this smsc id */
     init_reroute(conn, grp);
@@ -335,6 +339,7 @@
 
     octstr_destroy(conn->name);
     octstr_destroy(conn->id);
+    octstr_destroy(conn->admin_id);
     gwlist_destroy(conn->allowed_smsc_id, octstr_destroy_item);
     gwlist_destroy(conn->denied_smsc_id, octstr_destroy_item);
     gwlist_destroy(conn->preferred_smsc_id, octstr_destroy_item);
@@ -412,6 +417,13 @@
 }
 
 
+const Octstr *smscconn_admin_id(SMSCConn *conn)
+{
+    gw_assert(conn != NULL);
+    return conn->admin_id;
+}
+
+
 int smscconn_usable(SMSCConn *conn, Msg *msg)
 {
     gw_assert(conn != NULL);
Index: gw/smscconn_p.h
===================================================================
--- gw/smscconn_p.h	(revision 32)
+++ gw/smscconn_p.h	(working copy)
@@ -168,6 +168,7 @@
     Octstr *name;		/* Descriptive name filled from connection info */
     Octstr *id;			/* Abstract name specified in configuration and
 				   used for logging and routing */
+    Octstr *admin_id;
     List *allowed_smsc_id;
     List *denied_smsc_id;
     List *preferred_smsc_id;
Index: gw/smscconn.h
===================================================================
--- gw/smscconn.h	(revision 32)
+++ gw/smscconn.h	(working copy)
@@ -166,6 +166,9 @@
 /* Return ID of the SMSC, as reference - caller may not free it! */
 const Octstr *smscconn_id(SMSCConn *conn);
 
+/* Return Admin ID of the SMSC, as reference - caller may not free it! */
+const Octstr *smscconn_admin_id(SMSCConn *conn);
+
 /* Check if this SMSC Connection is usable as sender for given
  * message. The bearerbox must then select the good SMSC for sending
  * according to load levels and connected/disconnected status, this
