private SiddhiConfiguration getSiddhiConfigurationFor(
      ExecutionPlanConfiguration executionPlanConfiguration, int tenantId)
      throws ServiceDependencyValidationException {
    SiddhiConfiguration siddhiConfig = new SiddhiConfiguration();
    siddhiConfig.setAsyncProcessing(false);
    siddhiConfig.setInstanceIdentifier(
        "org.wso2.siddhi.instance-" + tenantId + "-" + UUID.randomUUID().toString());

    String isDistributedProcessingEnabledString =
        executionPlanConfiguration
            .getSiddhiConfigurationProperties()
            .get(EventProcessorConstants.SIDDHI_DISTRIBUTED_PROCESSING);
    if (isDistributedProcessingEnabledString != null
        && (isDistributedProcessingEnabledString.equalsIgnoreCase("DistributedCache")
            || isDistributedProcessingEnabledString.equalsIgnoreCase("true"))) {
      siddhiConfig.setDistributedProcessing(true);
      if (EventProcessorValueHolder.getHazelcastInstance() != null) {
        siddhiConfig.setInstanceIdentifier(
            EventProcessorValueHolder.getHazelcastInstance().getName());
      } else {
        throw new ServiceDependencyValidationException(
            EventProcessorConstants.HAZELCAST_INSTANCE, "Hazelcast instance is not initialized.");
      }
    } else if (isDistributedProcessingEnabledString != null
        && isDistributedProcessingEnabledString.equalsIgnoreCase("RedundantNode")) {
      siddhiConfig.setDistributedProcessing(false);
      if (EventProcessorValueHolder.getHazelcastInstance() != null) {
        siddhiConfig.setInstanceIdentifier(
            EventProcessorValueHolder.getHazelcastInstance().getName());
      } else {
        throw new ServiceDependencyValidationException(
            EventProcessorConstants.HAZELCAST_INSTANCE, "Hazelcast instance is not initialized.");
      }
    } else {
      siddhiConfig.setDistributedProcessing(false);
    }

    siddhiConfig.setQueryPlanIdentifier(
        "org.wso2.siddhi-" + tenantId + "-" + executionPlanConfiguration.getName());
    siddhiConfig.setSiddhiExtensions(SiddhiExtensionLoader.loadSiddhiExtensions());
    return siddhiConfig;
  }