code: private static void initDataId(String scenarioName) throws TechnicalException {
          final List<DataIndex> indexData = new ArrayList<>();
          try {
              Context.getDataInputProvider().prepare(scenarioName);
              final Class<Model> model = Context.getDataInputProvider().getModel(Context.getModelPackages());
              if (model != null) {
                  final String[] headers = Context.getDataInputProvider().readLine(0, false);
                  if (headers != null) {
                      final Constructor<Model> modelConstructor = DataUtils.getModelConstructor(model, headers);
                      final Map<String, ModelList> fusionedData = DataUtils.fusionProcessor(model, modelConstructor);
                      int dataIndex = 0;
                      for (final Entry<String, ModelList> e : fusionedData.entrySet()) {
                          dataIndex++;
                          indexData.add(new DataIndex(dataIndex, e.getValue().getIds()));
                      }
                  } else {
                      logger.error(Messages.getMessage(ScenarioInitiator.SCENARIO_INITIATOR_ERROR_EMPTY_FILE));
                  }
              } else {
                  for (int i = 1; i < Context.getDataInputProvider().getNbLines(); i++) {
                      final List<Integer> index = new ArrayList<>();
                      index.add(i);
                      indexData.add(new DataIndex(i, index));
                  }
              }
              Context.getDataInputProvider().setIndexData(indexData);
          } catch (final Exception te) {
              throw new TechnicalException(Messages.getMessage(TechnicalException.TECHNICAL_ERROR_MESSAGE) + te.getMessage(), te);
          }
      }
docs: init all Data index (by model).
  
  @param scenarioName
  name of scenario.
  @throws TechnicalException
  is thrown if you have a technical error (format, configuration, datas, ...) in NoraUi.