diff --git a/matlab/test/classes/@MatMust/MatMust.m b/matlab/test/classes/@MatMust/MatMust.m
index 1c3403ab3003a1ed39d74ef2cfcaa8e62df268a9..afa3b7076fea6220350e947e31357a4ca7979533 100644
--- a/matlab/test/classes/@MatMust/MatMust.m
+++ b/matlab/test/classes/@MatMust/MatMust.m
@@ -168,35 +168,51 @@ classdef MatMust < handle
                     'mode', 'SIMPLE'};
 
             try
-                data = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions);
+                response = webread([obj.url,obj.urlsub, query], args{:} ,obj.GEToptions);
             catch ME
                 fprintf('+++ WARNING\n%s - %s\n', ME.identifier, ME.message)
                 return
             end
-
+            
+            if isa(response,'struct')
+                data{1} = response;
+            else
+                data = response;
+            end
+            
             %refine date string to adapt MATLAB date format
-            for i=1:numel(data)
-                data_par = data(i).data;
+            for i=1:numel(data{1})
+                if isempty(data{1}(i).data)
+                    fprintf('+++ WARNING\n%s for %s\n', 'No Data existing in time span', data.name)
+                    continue
+                end
+                data_par = data{1}(i).data;
                 t = num2cell(datenum(datetime('1970-01-01', 'TimeZone','utc'))+(str2num(str2mat(data_par.date))/1000/86400));
-                [data(i).data.dateMAT] = deal(t{:});
+                [data{1}(i).data.dateMAT] = deal(t{:});
                 clear t
             end
 
             if nargin > 5
                 if any(ismember(varargin,'dump'))
                     fprintf('+++++++++++++ DATA RESULT LIST +++++++++++++\n');
-                    for i=1:numel(data)
-                        data_par = data(i).data;
-                        fprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description );
+                    for i=1:numel(data{1})
+                         if isempty(data{i}(i).data)
+                             continue
+                         end
+                        data_par = data{i}.data;
+                        fprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description );
                         %TODO filter for several kind of dataType 'DOUBLE',
                         %'SIGNED_SMALL_INT', 'STRING'
-                        switch data(i).dataType
+                        switch data{1}(i).dataType
                             case 'DOUBLE'
                                 format = '%f';
-                            case 'SIGNED_SMALL_INT'
+                            case {'SIGNED_SMALL_INT', 'UNSIGNED_INT'}
                                 format = '%i';
                             case 'STRING'
                                 format = '%s';
+                            otherwise
+                                format = '%s';
+                            
                         end
                         format = ['%s - ',format,'\n'];
                         for i = 1:numel(data_par)
@@ -208,10 +224,13 @@ classdef MatMust < handle
                     fprintf('+++++++++++++++++++++++++++++++++++++++++\n');
                 end
                 if any(ismember(varargin,'plot'))
-                     for i=1:numel(data) 
-                        data_par = data(i).data;
+                     for i=1:numel(data{1}) 
+                        if isempty(data{1}(i).data)
+                             continue
+                        end
+                        data_par = data{1}(i).data;
                         figure
-                        title(sprintf('%s-%s: %s -> %s\n', data(i).subsystem, data(i).type, data(i).name, data(i).description ))
+                        title(sprintf('%s-%s: %s -> %s\n', data{1}(i).subsystem, data{1}(i).type, data{1}(i).name, data{1}(i).description ))
                         if strcmp(calibrate,'true')
                             switch class(data_par(1).calibratedValue) 
                                 case 'char'
@@ -231,10 +250,10 @@ classdef MatMust < handle
                             plot([data_par.dateMAT], [data_par.value], '-x' );
                         end
                         xlabel('time');
-                        if isfield(data(i), 'unit')
-                            ylabel(data(i).unit);
+                        if isfield(data{1}(i), 'unit')
+                            ylabel(data{1}(i).unit);
                         end
-                        title([data(i).description,' - ',data(i).name]);
+                        title([data{1}(i).description,' - ',data{1}(i).name]);
                         datetick('x');
                         grid on
                     end
@@ -242,7 +261,7 @@ classdef MatMust < handle
             end
 
         end
-        function t = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin)
+        function o = MatMust_searchTMparFromName(obj, namequery, dataproviders, varargin)
             % +++ 
             % MatMust_searchTMparFromName
             % Search a parameter into the requested dataprovider (es. BEPICRUISE)
@@ -262,16 +281,18 @@ classdef MatMust < handle
                 query = 'metadata/treesearch';
                 obj.GEToptions.HeaderFields = {'Authorization', obj.tockenstruct.token};
                 if isa(dataproviders,'cell')
-                    dataproviders = char(join(dataproviders,','));
+                    dataprovidersstr = char(join(dataproviders,','));
+                else
+                    dataprovidersstr = dataproviders;
                 end
                 try
                     optindx = strcmp(varargin,'Description')+strcmp(varargin,'Unit')+strcmp(varargin,'Id');
                     if any(find(optindx))
                         field = join(varargin(find(optindx)),',');
-                        response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataproviders ,obj.GEToptions);
+                        response = webread([obj.url,obj.urlsub, query], 'field',['name,',char(field)],'text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions);
                     else
                         
-                        response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataproviders ,obj.GEToptions);
+                        response = webread([obj.url,obj.urlsub, query], 'field','name','text',namequery,'dataproviders', dataprovidersstr ,obj.GEToptions);
                     end
                     t = response ;
                 catch ME
@@ -297,6 +318,26 @@ classdef MatMust < handle
                     end
                 end
             end
+            % output only requested ds
+            if isa(dataproviders,'cell')
+                c = 0;
+                for i = 1:numel(t)
+                    for j = 1:numel(dataproviders)
+                        if strcmp(t(i).type, [dataproviders(j), ' params'] )
+                            c = c+1;
+                            o(c) = t(i); 
+                        end
+                    end
+                end
+            else
+                c = 0;
+                for i = 1:numel(t)
+                    if strcmp(t(i).type, [dataproviders, ' params'] )
+                        c = c+1;
+                        o(c) = t(i); 
+                    end
+                end     
+            end
         end
         function MatMust_login(obj, varargin )
             % login