diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp
index d04257a6b517bea80d29589ab6b3db6bd475f5e9..45f8a1437efec7765417139b049765498c9ef301 100755
--- a/sflphone-common/src/sip/sipvoiplink.cpp
+++ b/sflphone-common/src/sip/sipvoiplink.cpp
@@ -590,7 +590,7 @@ int SIPVoIPLink::sendRegister (AccountID id)
 
     std::string contactUri = account->getContactHeader (address, portStr);
 
-    _debug ("sendRegister: fromUri: %s serverUri: %s contactUri: %s",
+    _debug ("UserAgent: sendRegister: fromUri: %s serverUri: %s contactUri: %s",
             fromUri.c_str(),
             srvUri.c_str(),
             contactUri.c_str());
@@ -607,31 +607,24 @@ int SIPVoIPLink::sendRegister (AccountID id)
     // Initializes registration
 
     // Set Route for registration passing throught one or several proxies
+    // status = pjsip_regc_init (regc, &pjSrv, &pjFrom, &pjFrom, 1, &pjContact, expire_value);
+
     status = pjsip_regc_init (regc, &pjSrv, &pjFrom, &pjFrom, 1, &pjContact, expire_value);
 
-    /*
-    if(!(account->getDomainName().empty())) {
+    if(!(account->getServiceRoute().empty())) {
 
-        _error("Set route with %s", account->getHostname().c_str());
+        _error("UserAgent: Set Service-Route with %s", account->getServiceRoute().c_str());
 
         pjsip_route_hdr *route_set = pjsip_route_hdr_create(_pool);
         pjsip_route_hdr *routing = pjsip_route_hdr_create(_pool);
         pjsip_sip_uri *url = pjsip_sip_uri_create(_pool, 0);
         routing->name_addr.uri = (pjsip_uri*)url;
-        pj_strdup2(_pool, &url->host, account->getHostname().c_str());
+        pj_strdup2(_pool, &url->host, account->getServiceRoute().c_str());
 
         pj_list_push_back(&route_set, pjsip_hdr_clone(_pool, routing));
 
-	status = pjsip_regc_init (regc, &pjSrv, &pjFrom, &pjFrom, 1, &pjContact, expire_value);
-
         pjsip_regc_set_route_set(regc, route_set);
     }
-    else {
-
-        status = pjsip_regc_init (regc, &pjSrv, &pjFrom, &pjFrom, 1, &pjContact, expire_value);
-    }
-    */
-
 
     if (status != PJ_SUCCESS) {
         _debug ("UserAgent: Unable to initialize account %d in sendRegister", status);
@@ -1480,6 +1473,23 @@ SIPVoIPLink::SIPStartCall (SIPCall* call, const std::string& subject UNUSED)
     // Create the invite session for this call
     status = pjsip_inv_create_uac (dialog, call->getLocalSDP()->get_local_sdp_session(), 0, &inv);
 
+
+    if(!(account->getServiceRoute().empty())) {
+
+        _error("UserAgent: Set Service-Route with %s", account->getServiceRoute().c_str());
+
+        pjsip_route_hdr *route_set = pjsip_route_hdr_create(_pool);
+        pjsip_route_hdr *routing = pjsip_route_hdr_create(_pool);
+        pjsip_sip_uri *url = pjsip_sip_uri_create(_pool, 0);
+        routing->name_addr.uri = (pjsip_uri*)url;
+        pj_strdup2(_pool, &url->host, account->getServiceRoute().c_str());
+
+        pj_list_push_back(&route_set, pjsip_hdr_clone(_pool, routing));
+
+	pjsip_dlg_set_route_set(dialog, route_set);
+    }
+
+
     PJ_ASSERT_RETURN (status == PJ_SUCCESS, false);
 
     // Set auth information
@@ -1745,6 +1755,21 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to)
 	// Create the invite session for this call
 	status = pjsip_inv_create_uac (dialog, call->getLocalSDP()->get_local_sdp_session(), 0, &inv);
 	PJ_ASSERT_RETURN (status == PJ_SUCCESS, false);
+
+	if(!(account->getServiceRoute().empty())) {
+
+	  _error("UserAgent: Set Service-Route with %s", account->getServiceRoute().c_str());
+
+	  pjsip_route_hdr *route_set = pjsip_route_hdr_create(_pool);
+	  pjsip_route_hdr *routing = pjsip_route_hdr_create(_pool);
+	  pjsip_sip_uri *url = pjsip_sip_uri_create(_pool, 0);
+	  routing->name_addr.uri = (pjsip_uri*)url;
+	  pj_strdup2(_pool, &url->host, account->getServiceRoute().c_str());
+	  
+	  pj_list_push_back(&route_set, pjsip_hdr_clone(_pool, routing));
+	  
+	  pjsip_dlg_set_route_set(dialog, route_set);
+	}
 	
 	// Set the appropriate transport
 	pjsip_tpselector *tp;