diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap.pm
index c706d2f6a1..2a5088d9b7 100644
--- a/lib/NGCP/Panel/Utils/DeviceBootstrap.pm
+++ b/lib/NGCP/Panel/Utils/DeviceBootstrap.pm
@@ -11,7 +11,7 @@ sub dispatch{
     my($c, $action, $fdev, $old_identifier) = @_;
     
     my $params = {
-        %{$self->get_devmod_params($c, $fdev->profile->config->device)},
+        %{get_devmod_params($c, $fdev->profile->config->device)},
         mac => $fdev->identifier,
         mac_old => $old_identifier,
     };
@@ -25,8 +25,8 @@ sub dispatch{
 sub dispatch_devmod{
     my($c, $action, $devmod) = @_;
     
-    my $params = $self->get_devmod_params($c,$devmod);
-    my $redirect_processor = get_redirect_processor($c,$params);
+    my $params = get_devmod_params($c,$devmod);
+    my $redirect_processor = get_redirect_processor($params);
     my $ret;
     if($redirect_processor){
         $ret = $redirect_processor->redirect_server_call($action);
@@ -34,7 +34,7 @@ sub dispatch_devmod{
     return $ret;
 }
 sub get_devmod_params{
-    my($self, $devmod) = @_;
+    my($c, $devmod) = @_;
     
     my $credentials = $devmod->autoprov_redirect_credentials;
     my $vcredentials;
diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap/Panasonic.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap/Panasonic.pm
index f982313b5f..3b983d30cd 100644
--- a/lib/NGCP/Panel/Utils/DeviceBootstrap/Panasonic.pm
+++ b/lib/NGCP/Panel/Utils/DeviceBootstrap/Panasonic.pm
@@ -35,12 +35,13 @@ sub rpc_server_params{
 
 sub register_content {
     my $self = shift;
+#<param><value><string>".URI::Escape::uri_escape($self->content_params->{uri})."</string></value></param> 
     $self->{register_content} = "<?xml version=\"1.0\"?> 
 <methodCall> 
 <methodName>ipredirect.registerPhone</methodName> 
 <params> 
 <param><value><string>".$self->content_params->{mac}."</string></value></param> 
-<param><value><string>".$self->content_params->{uri}."</string></value></param> 
+<param><value><string><![CDATA[".$self->content_params->{uri}."]]></string></value></param> 
 </params> 
 </methodCall>";
     return $self->{register_content};
diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm
index 94325f242d..6458039023 100644
--- a/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm
+++ b/lib/NGCP/Panel/Utils/DeviceBootstrap/VendorRPC.pm
@@ -106,7 +106,7 @@ sub get_bootstrap_uri{
 
 sub process_uri{
     my($self,$uri) = @_;
-    if($uri !~/^https?:\/\//i ){
+    if($uri !~/^(?:https?|t?ftp):\/\//i ){
         $uri = 'http://'.$uri;
     }
     if ($uri !~/\{MAC\}$/){
@@ -115,7 +115,6 @@ sub process_uri{
         }
         $uri .= '{MAC}' ;
     }
-    $uri = URI::Escape::uri_escape($uri);
     return $uri;
 }
 #separated as this logic also used in other places, so can be moved to other utils module
diff --git a/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm b/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm
index ec6745efd4..e2d072db6f 100644
--- a/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm
+++ b/lib/NGCP/Panel/Utils/DeviceBootstrap/Yealink.pm
@@ -50,9 +50,7 @@ sub register_content {
 <param>
 <value><string><![CDATA[".$self->content_params->{server_name}."]]></string></value>
 </param>
-<param>
-<value><string>1</string></value>
-</param></params>
+</params>
 </methodCall>";
     return $self->{register_content};
 }
@@ -72,7 +70,6 @@ sub unregister_content {
 }
 sub add_server_content {
     my $self = shift;
-    $self->uri2server_name();
     $self->{add_server_content} ||=  "<?xml version='1.0' encoding='UTF-8'?>
 <methodCall>
 <methodName>redirect.addServer</methodName>
@@ -106,6 +103,12 @@ sub extract_response_description{
         return;
     }
 }
+override 'process_uri' => sub {
+    my($self,$uri) = @_;
+    $self->content_params->{uri} = super();
+    $self->uri2server_name();
+    return $self->content_params->{uri};
+};
 
 sub uri2server_name{
     my($self) = @_;