diff --git a/matlab/TCV_IMAS/tcv2ids2database.m b/matlab/TCV_IMAS/tcv2ids2database.m
index 664175a4313b51c1194f1b54980d78155a6777d9..fd9b711a350ca82e28b6c31a11508a4515ec371c 100644
--- a/matlab/TCV_IMAS/tcv2ids2database.m
+++ b/matlab/TCV_IMAS/tcv2ids2database.m
@@ -81,6 +81,9 @@ else
   p.Results
   return
 end
+
+params.imas_backend = upper(params.imas_backend);
+
 % replace empty inputs with defaults
 names = fieldnames(params);
 mask = structfun(@isempty,params);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
index 6256bafbceffc2b7449422bbd0feb0a3efe5a04d..4a86a9db356363fbd7ea19acad3a404a7b20f5f2 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m
@@ -178,6 +178,7 @@ if ~isempty(ec_gdat.ec.data) % if EC data available, fill sources
   % retrieve active launcher information from ec_inputs
   nb_launchers = numel(ec_inputs.launchers_active.data);
   active_launchers = find(ec_inputs.launchers_active.data==1)';
+  nb_active= numel(active_launchers);
 
   % find times of injected EC power to interpolate power & current densities
   % on p_ec_injected tgrid
@@ -198,7 +199,7 @@ if ~isempty(ec_gdat.ec.data) % if EC data available, fill sources
   main_desc = 'Source from electron cyclotron heating and current drive';
   production = 'TORAY';
   id_ec.index = 3; id_ec.name = 'ec';
-  for i_lau = active_launchers
+  for i_lau = 1:nb_active
     id_ec.description = sprintf('L%i/G%i, %s from %s double width CD profiles',i_lau,ec_inputs.gyro2launcher.data(i_lau),main_desc,production);
     ids_core_sources.source{last_index+i_lau} = source_template;
     ids_core_sources.source{last_index+i_lau}.identifier = id_ec;
@@ -340,7 +341,7 @@ if ~isempty(ec_gdat.ec.data) % if EC data available, fill sources
   end
 
   % fill the ids entries
-  for i_lau = active_launchers
+  for i_lau = 1:nb_active
     for ii = 1:nt_ec_out
       % 1d_profiles
       ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.time = ec_tgrid_out(ii);
@@ -350,33 +351,33 @@ if ~isempty(ec_gdat.ec.data) % if EC data available, fill sources
         ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.grid.rho_pol_norm = interp_rho_pol(:,ii);
         % power density
         ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.energy = ...
-          interp_p_dens(:,i_lau,ii);
+          interp_p_dens(:,active_launchers(i_lau),ii);
         % integrated power density
         ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.power_inside = ...
-          interp_p_integrated(:,i_lau,ii);
+          interp_p_integrated(:,active_launchers(i_lau),ii);
         % current density
         ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.j_parallel = ...
-          interp_jpar0(:,i_lau,ii);
+          interp_jpar0(:,active_launchers(i_lau),ii);
         % integrated current density
         ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.current_parallel_inside = ...
-          interp_jpar0_integrated(:,i_lau,ii);
+          interp_jpar0_integrated(:,active_launchers(i_lau),ii);
       end
 
       % globals
       ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.time = ec_tgrid_out(ii);
       ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.power = ...
-        interp_p_integrated(end,i_lau,ii);
+        interp_p_integrated(end,active_launchers(i_lau),ii);
       ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.current_parallel = ...
-        interp_jpar0_integrated(end,i_lau,ii);
+        interp_jpar0_integrated(end,active_launchers(i_lau),ii);
     end
   end
 
-  %add empty sources for rest of unused launchers
-  if numel(ids_core_sources.source)-last_index ~= nb_launchers
-    ids_core_sources.source{last_index+nb_launchers} = [];
-  end
+%   %add empty sources for rest of unused launchers
+%   if numel(ids_core_sources.source)-last_index ~= nb_launchers
+%     ids_core_sources.source{last_index+nb_launchers} = [];
+%   end
 
-  last_index = last_index+nb_launchers;
+  last_index = last_index+nb_active;
 end
 
 %% NBI. same tgrid for NBI1 and NBI2
@@ -423,6 +424,7 @@ if numel(active_nbi)>0
 
       p_nbi_injected_tmp = interpos(nbi_powers_tgrid,powers_gdat.(nbi_names{i_nbi}).data,nbi_tgrid_out);
       for ii = 1:nt_nbi_out
+        ids_core_sources.source{last_index+i_nbi}.profiles_1d{ii}.time = nbi_tgrid_out(ii);
         % globals
         ids_core_sources.source{last_index+i_nbi}.global_quantities{ii}.time = nbi_tgrid_out(ii);
         ids_core_sources.source{last_index+i_nbi}.global_quantities{ii}.power = p_nbi_injected_tmp(ii);
@@ -465,6 +467,7 @@ if ~isempty(powers_gdat.dnbi)
 
     p_dnbi_injected = interpos(dnbi_powers_tgrid,powers_gdat.dnbi.data,dnbi_tgrid_out);
     for ii = 1:nt_dnbi_out
+      ids_core_sources.source{last_index+1}.profiles_1d{ii}.time = dnbi_tgrid_out(ii);
       % globals
       ids_core_sources.source{last_index+1}.global_quantities{ii}.time = dnbi_tgrid_out(ii);
       ids_core_sources.source{last_index+1}.global_quantities{ii}.power = p_dnbi_injected(ii);