protected void executeSiteImport(
      final AddOnDataImportEventContext context,
      final ImportData importData,
      final ImpexMacroParameterData parameterData) {
    final CatalogModel productCatalog =
        getCatalogService().getCatalogForId(importData.getProductCatalogName() + "ProductCatalog");
    context.setProductCatalog(productCatalog);
    populate(context, parameterData, getSelectedProductCatalogImpexMacroParametersPopulators());
    final boolean productFilesImported =
        getAddonConfigDataImportService()
            .executeImport(
                parameterData.getConfigExtensionName(),
                AddonConfigDataImportType.PRODUCT,
                parameterData);
    if (productFilesImported
        && getAddonSystemSetupSupport()
            .getBooleanSystemSetupParameter(
                context.getSourceEvent().getContext(),
                AddOnSystemSetupSupport.IMPORT_SYNC_CATALOGS)) {
      getAddonSystemSetupSupport()
          .synchronizeProductCatalog(context.getSourceEvent().getContext(), productCatalog.getId());
    }

    for (final String store : importData.getStoreNames()) {

      final BaseSiteModel baseSite = getBaseSiteService().getBaseSiteForUID(store);
      if (getSupportedChannels().contains(baseSite.getChannel())) {
        if (LOG.isInfoEnabled()) {
          LOG.info(
              "importing addon ["
                  + parameterData.getConfigExtensionName()
                  + "] configuration for ["
                  + store
                  + "]");
        }

        context.setBaseSite(baseSite);
        populate(context, parameterData, getSelectedBaseSiteImpexMacroParametersPopulators());

        if (baseSite instanceof CMSSiteModel) {
          final CMSSiteModel cmsSite = (CMSSiteModel) baseSite;
          for (final String contentCatalogName : importData.getContentCatalogNames()) {
            final CatalogModel contentCatalog =
                getCatalogService().getCatalogForId(contentCatalogName + "ContentCatalog");
            if (cmsSite.getContentCatalogs().contains(contentCatalog)) {
              context.setContentCatalog((ContentCatalogModel) contentCatalog);
              populate(
                  context,
                  parameterData,
                  getSelectedContentCatalogImpexMacroParametersPopulators());
              final boolean contentFilesImported =
                  getAddonConfigDataImportService()
                      .executeImport(
                          parameterData.getConfigExtensionName(),
                          AddonConfigDataImportType.CONTENT,
                          parameterData);
              if (contentFilesImported
                  && getAddonSystemSetupSupport()
                      .getBooleanSystemSetupParameter(
                          context.getSourceEvent().getContext(),
                          AddOnSystemSetupSupport.IMPORT_SYNC_CATALOGS)) {
                getAddonSystemSetupSupport()
                    .synchronizeContentCatalog(
                        context.getSourceEvent().getContext(), contentCatalog.getId());
              }
              // import stores
              getAddonConfigDataImportService()
                  .executeImport(
                      parameterData.getConfigExtensionName(),
                      AddonConfigDataImportType.STORE,
                      parameterData);
            }
          }
        }

        final boolean solrFilesImported =
            getAddonConfigDataImportService()
                .executeImport(
                    parameterData.getConfigExtensionName(),
                    AddonConfigDataImportType.SOLR,
                    parameterData);
        if ((solrFilesImported || productFilesImported)
            && getAddonSystemSetupSupport()
                .getBooleanSystemSetupParameter(
                    context.getSourceEvent().getContext(),
                    AddOnSystemSetupSupport.ACTIVATE_SOLR_CRON_JOBS)) {
          getAddonSystemSetupSupport()
              .executeSolrIndexerCronJob(parameterData.getSiteUid() + "Index", true);
        }
      }
    }
  }