@Override
  public Serializable execute(
      final Map<String, Serializable> parameters, final TenantServiceAccessor serviceAccessor)
      throws SCommandParameterizationException, SCommandExecutionException {

    final String queryName = getStringMandadoryParameter(parameters, QUERY_NAME);
    @SuppressWarnings("unchecked")
    final Map<String, Serializable> queryParameters =
        (Map<String, Serializable>) parameters.get(QUERY_PARAMETERS);
    final String entityClassName = getStringMandadoryParameter(parameters, ENTITY_CLASS_NAME);
    final Integer startIndex = getIntegerMandadoryParameter(parameters, START_INDEX);
    final Integer maxResults = getIntegerMandadoryParameter(parameters, MAX_RESULTS);
    String businessDataURIPattern =
        getStringMandadoryParameter(parameters, BusinessDataCommandField.BUSINESS_DATA_URI_PATTERN);
    try {
      return serviceAccessor
          .getBusinessDataService()
          .getJsonQueryEntities(
              entityClassName,
              queryName,
              queryParameters,
              startIndex,
              maxResults,
              businessDataURIPattern);
    } catch (SBusinessDataRepositoryException e) {
      throw new SCommandExecutionException(e);
    }
  }