streampipes-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zehn...@apache.org
Subject [incubator-streampipes] branch dev updated: STREAMPIPES-2: Rename project namespace to Apache coordinates
Date Wed, 11 Dec 2019 22:24:19 GMT
This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git


The following commit(s) were added to refs/heads/dev by this push:
     new 9e5cafd  STREAMPIPES-2: Rename project namespace to Apache coordinates
9e5cafd is described below

commit 9e5cafd11f530d5212f973da7b532b0dd102c22d
Author: Dominik Riemer <riemer@fzi.de>
AuthorDate: Wed Dec 11 23:16:17 2019 +0100

    STREAMPIPES-2: Rename project namespace to Apache coordinates
---
 README.md                                          |   2 +-
 .../README.md                                      |   2 +-
 .../pom.xml                                        |   2 +-
 .../src/main/resources/archetype-resources/pom.xml |  22 +-
 .../src/main/java/config/Config.java               |   4 +-
 .../src/main/java/main/Init.java                   |  16 +-
 .../__packageName__/__classNamePrefix__.java       |   2 +-
 .../__classNamePrefix__Controller.java             |  30 +-
 .../__classNamePrefix__Parameters.java             |   4 +-
 .../__classNamePrefix__Program.java                |   6 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 .../README.md                                      |   2 +-
 .../pom.xml                                        |   2 +-
 .../src/main/resources/archetype-resources/pom.xml |  20 +-
 .../src/main/java/config/Config.java               |   4 +-
 .../src/main/java/main/Init.java                   |  16 +-
 .../__packageName__/__classNamePrefix__.java       |   8 +-
 .../__classNamePrefix__Controller.java             |  30 +-
 .../__classNamePrefix__Parameters.java             |   4 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 .../streampipes-archetype-pe-sinks-flink/README.md |   2 +-
 .../streampipes-archetype-pe-sinks-flink/pom.xml   |   2 +-
 .../src/main/resources/archetype-resources/pom.xml |  22 +-
 .../src/main/java/config/Config.java               |   4 +-
 .../src/main/java/main/Init.java                   |  20 +-
 .../__classNamePrefix__Controller.java             |  28 +-
 .../__classNamePrefix__Parameters.java             |   4 +-
 .../__classNamePrefix__Program.java                |   6 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 .../streampipes-archetype-pe-sinks-jvm/README.md   |   2 +-
 .../streampipes-archetype-pe-sinks-jvm/pom.xml     |   2 +-
 .../src/main/resources/archetype-resources/pom.xml |  20 +-
 .../src/main/java/config/Config.java               |   4 +-
 .../src/main/java/main/Init.java                   |  20 +-
 .../sink/__packageName__/__classNamePrefix__.java  |   6 +-
 .../__classNamePrefix__Controller.java             |  28 +-
 .../__classNamePrefix__Parameters.java             |   4 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 .../streampipes-archetype-pe-sources/README.md     |   2 +-
 .../streampipes-archetype-pe-sources/pom.xml       |   2 +-
 .../src/main/resources/archetype-resources/pom.xml |  14 +-
 .../src/main/java/config/Config.java               |   4 +-
 .../src/main/java/main/Init.java                   |   4 +-
 .../main/java/pe/__packageName__/DataSource.java   |   8 +-
 .../__packageName__/__classNamePrefix__Stream.java |  14 +-
 pom.xml                                            |   2 +-
 streampipes-app-file-export/pom.xml                |   4 +-
 .../app/file/export/ElasticsearchAppData.java      |  83 +++
 .../app/file/export/ElasticsearchConfig.java       |  60 ++
 .../app/file/export/api/IElasticsearch.java        |  36 ++
 .../application/AppFileExportApplication.java      |  30 +
 .../app/file/export/converter/JsonConverter.java   |  65 ++
 .../app/file/export/impl/Elasticsearch.java        | 320 ++++++++++
 .../app/file/export/model/IndexInfo.java           |  45 ++
 .../app/file/export/ElasticsearchAppData.java      |  83 ---
 .../app/file/export/ElasticsearchConfig.java       |  60 --
 .../app/file/export/api/IElasticsearch.java        |  36 --
 .../application/AppFileExportApplication.java      |  30 -
 .../app/file/export/converter/JsonConverter.java   |  65 --
 .../app/file/export/impl/Elasticsearch.java        | 320 ----------
 .../app/file/export/model/IndexInfo.java           |  45 --
 streampipes-backend/pom.xml                        |  12 +-
 .../backend/StreamPipesBackendApplication.java     | 100 +++
 .../backend/StreamPipesResourceConfig.java         | 124 ++++
 .../streampipes/backend/WelcomePageController.java |  30 +
 .../backend/StreamPipesBackendApplication.java     | 100 ---
 .../backend/StreamPipesResourceConfig.java         | 124 ----
 .../streampipes/backend/WelcomePageController.java |  30 -
 streampipes-backend/src/main/resources/shiro.ini   |   4 +-
 streampipes-code-generation/pom.xml                |   8 +-
 .../codegeneration/ControllerGenerator.java        | 144 +++++
 .../streampipes/codegeneration/Generator.java      |  65 ++
 .../codegeneration/api/CodeGenerator.java          |  55 ++
 .../codegeneration/api/IDeclareModelGenerator.java |  27 +
 .../api/ImplementationCodeGenerator.java           |  86 +++
 .../declarer/DeclareModelGenerator.java            |  21 +
 .../codegeneration/flink/ConfigGenerator.java      |  59 ++
 .../codegeneration/flink/FlinkCodeGenerator.java   |  72 +++
 .../codegeneration/flink/InitGenerator.java        |  64 ++
 .../codegeneration/flink/XmlGenerator.java         |  46 ++
 .../flink/sec/FlinkSecCodeGenerator.java           |  50 ++
 .../flink/sec/FlinkSecControllerGenerator.java     |  82 +++
 .../flink/sec/FlinkSecProgramGenerator.java        |  64 ++
 .../flink/sepa/FlinkSepaCodeGenerator.java         |  59 ++
 .../flink/sepa/FlinkSepaControllerGenerator.java   | 110 ++++
 .../flink/sepa/FlinkSepaProgramGenerator.java      |  65 ++
 .../flink/sepa/ImplementationGenerator.java        |  61 ++
 .../flink/sepa/ParametersGenerator.java            |  83 +++
 .../codegeneration/utils/DirectoryBuilder.java     |  51 ++
 .../streampipes/codegeneration/utils/JFC.java      |  98 +++
 .../streampipes/codegeneration/utils/Utils.java    | 121 ++++
 .../codegeneration/ControllerGenerator.java        | 144 -----
 .../org/streampipes/codegeneration/Generator.java  |  65 --
 .../codegeneration/api/CodeGenerator.java          |  55 --
 .../codegeneration/api/IDeclareModelGenerator.java |  27 -
 .../api/ImplementationCodeGenerator.java           |  86 ---
 .../declarer/DeclareModelGenerator.java            |  21 -
 .../codegeneration/flink/ConfigGenerator.java      |  59 --
 .../codegeneration/flink/FlinkCodeGenerator.java   |  72 ---
 .../codegeneration/flink/InitGenerator.java        |  64 --
 .../codegeneration/flink/XmlGenerator.java         |  46 --
 .../flink/sec/FlinkSecCodeGenerator.java           |  50 --
 .../flink/sec/FlinkSecControllerGenerator.java     |  82 ---
 .../flink/sec/FlinkSecProgramGenerator.java        |  64 --
 .../flink/sepa/FlinkSepaCodeGenerator.java         |  59 --
 .../flink/sepa/FlinkSepaControllerGenerator.java   | 110 ----
 .../flink/sepa/FlinkSepaProgramGenerator.java      |  65 --
 .../flink/sepa/ImplementationGenerator.java        |  61 --
 .../flink/sepa/ParametersGenerator.java            |  83 ---
 .../codegeneration/utils/DirectoryBuilder.java     |  51 --
 .../org/streampipes/codegeneration/utils/JFC.java  |  98 ---
 .../streampipes/codegeneration/utils/Utils.java    | 121 ----
 streampipes-code-generation/src/main/resources/pom |  12 +-
 .../streampipes/codegeneration/AllTests.java       |  27 +
 .../codegeneration/ControllerGeneratorTest.java    | 122 ++++
 .../streampipes/codegeneration/TestDeployment.java |  49 ++
 .../codegeneration/api/CodeGeneratorTest.java      |  32 +
 .../codegeneration/flink/ConfigGeneratorTest.java  |  31 +
 .../codegeneration/flink/InitGeneratorTest.java    |  33 +
 .../codegeneration/flink/XmlGeneratorTest.java     |  40 ++
 .../flink/sec/FlinkSecCodeGeneratorTest.java       |  33 +
 .../flink/sec/FlinkSecControllerGeneratorTest.java |  65 ++
 .../flink/sec/FlinkSecProgramGeneratorTest.java    |  34 +
 .../flink/sepa/FlinkSepaCodeGeneratorTest.java     |  33 +
 .../sepa/FlinkSepaControllerGeneratorTest.java     |  70 +++
 .../flink/sepa/FlinkSepaProgramGeneratorTest.java  |  30 +
 .../flink/sepa/ImplementationGeneratorTest.java    |  30 +
 .../flink/sepa/ParametersGeneratorTest.java        |  51 ++
 .../codegeneration/utils/DirectoryBuilderTest.java |  57 ++
 .../streampipes/codegeneration/utils/TV.java       |  98 +++
 .../codegeneration/utils/UtilsTest.java            |  81 +++
 .../org/streampipes/codegeneration/AllTests.java   |  27 -
 .../codegeneration/ControllerGeneratorTest.java    | 122 ----
 .../streampipes/codegeneration/TestDeployment.java |  49 --
 .../codegeneration/api/CodeGeneratorTest.java      |  32 -
 .../codegeneration/flink/ConfigGeneratorTest.java  |  31 -
 .../codegeneration/flink/InitGeneratorTest.java    |  38 --
 .../codegeneration/flink/XmlGeneratorTest.java     |  47 --
 .../flink/sec/FlinkSecCodeGeneratorTest.java       |  33 -
 .../flink/sec/FlinkSecControllerGeneratorTest.java |  65 --
 .../flink/sec/FlinkSecProgramGeneratorTest.java    |  34 -
 .../flink/sepa/FlinkSepaCodeGeneratorTest.java     |  33 -
 .../sepa/FlinkSepaControllerGeneratorTest.java     |  70 ---
 .../flink/sepa/FlinkSepaProgramGeneratorTest.java  |  30 -
 .../flink/sepa/ImplementationGeneratorTest.java    |  37 --
 .../flink/sepa/ParametersGeneratorTest.java        |  51 --
 .../codegeneration/utils/DirectoryBuilderTest.java |  57 --
 .../org/streampipes/codegeneration/utils/TV.java   |  98 ---
 .../codegeneration/utils/UtilsTest.java            |  81 ---
 .../src/test/resources/Entity.json                 |   2 +-
 streampipes-commons/pom.xml                        |   2 +-
 .../java/org/apache/streampipes/commons/Utils.java |  85 +++
 .../constants/GlobalStreamPipesConstants.java      |  25 +
 .../exceptions/ElementNotFoundException.java       |  35 ++
 .../exceptions/NoMatchingFormatException.java      |  28 +
 .../exceptions/NoMatchingJsonSchemaException.java  |  22 +
 .../exceptions/NoMatchingProtocolException.java    |  23 +
 .../exceptions/NoMatchingSchemaException.java      |  28 +
 .../exceptions/NoSepaInPipelineException.java      |  28 +
 .../NoSuitableSepasAvailableException.java         |  23 +
 .../exceptions/NoValidConnectionException.java     |  23 +
 .../exceptions/NoValidSecTypeException.java        |  23 +
 .../exceptions/NoValidSepTypeException.java        |  23 +
 .../exceptions/NoValidSepaStructureException.java  |  23 +
 .../exceptions/NoValidSepaTypeException.java       |  23 +
 .../RemoteServerNotAccessibleException.java        |  47 ++
 .../commons/exceptions/SepaParseException.java     |  23 +
 .../commons/exceptions/SpException.java            |  52 ++
 .../commons/exceptions/SpRuntimeException.java     |  52 ++
 .../commons/exceptions/TooManyEdgesException.java  |  23 +
 .../commons/messaging/IMessageListener.java        |  25 +
 .../commons/messaging/IMessagePublisher.java       |  27 +
 .../streampipes/commons/parser/BooleanParser.java  |  26 +
 .../streampipes/commons/parser/FloatParser.java    |  26 +
 .../streampipes/commons/parser/IntegerParser.java  |  26 +
 .../commons/parser/PrimitiveTypeParser.java        |  27 +
 .../streampipes/commons/parser/StringParser.java   |  26 +
 .../streampipes/commons/zip/ZipFileExtractor.java  |  69 ++
 .../streampipes/commons/zip/ZipFileGenerator.java  | 117 ++++
 .../main/java/org/streampipes/commons/Utils.java   |  85 ---
 .../constants/GlobalStreamPipesConstants.java      |  25 -
 .../exceptions/ElementNotFoundException.java       |  35 --
 .../exceptions/NoMatchingFormatException.java      |  28 -
 .../exceptions/NoMatchingJsonSchemaException.java  |  22 -
 .../exceptions/NoMatchingProtocolException.java    |  23 -
 .../exceptions/NoMatchingSchemaException.java      |  28 -
 .../exceptions/NoSepaInPipelineException.java      |  28 -
 .../NoSuitableSepasAvailableException.java         |  23 -
 .../exceptions/NoValidConnectionException.java     |  23 -
 .../exceptions/NoValidSecTypeException.java        |  23 -
 .../exceptions/NoValidSepTypeException.java        |  23 -
 .../exceptions/NoValidSepaStructureException.java  |  23 -
 .../exceptions/NoValidSepaTypeException.java       |  23 -
 .../RemoteServerNotAccessibleException.java        |  47 --
 .../commons/exceptions/SepaParseException.java     |  23 -
 .../commons/exceptions/SpException.java            |  52 --
 .../commons/exceptions/SpRuntimeException.java     |  52 --
 .../commons/exceptions/TooManyEdgesException.java  |  23 -
 .../commons/messaging/IMessageListener.java        |  25 -
 .../commons/messaging/IMessagePublisher.java       |  27 -
 .../streampipes/commons/parser/BooleanParser.java  |  26 -
 .../streampipes/commons/parser/FloatParser.java    |  26 -
 .../streampipes/commons/parser/IntegerParser.java  |  26 -
 .../commons/parser/PrimitiveTypeParser.java        |  27 -
 .../streampipes/commons/parser/StringParser.java   |  26 -
 .../streampipes/commons/zip/ZipFileExtractor.java  |  69 --
 .../streampipes/commons/zip/ZipFileGenerator.java  | 117 ----
 streampipes-commons/src/main/resources/logback.xml |   2 +-
 streampipes-config/pom.xml                         |   4 +-
 .../org/apache/streampipes/config/SpConfig.java    |  81 +++
 .../streampipes/config/SpConfigChangeCallback.java |  24 +
 .../streampipes/config/backend/BackendConfig.java  | 232 +++++++
 .../config/backend/BackendConfigKeys.java          |  50 ++
 .../config/backend/MessagingSettings.java          |  95 +++
 .../streampipes/config/backend/SpDataFormat.java   |  45 ++
 .../streampipes/config/consul/ConsulSpConfig.java  | 265 ++++++++
 .../streampipes/config/consul/MockSpConfig.java    | 125 ++++
 .../streampipes/config/model/ConfigItem.java       |  81 +++
 .../config/model/ConfigurationScope.java           |  24 +
 .../apache/streampipes/config/model/PeConfig.java  |  62 ++
 .../main/java/org/streampipes/config/SpConfig.java |  81 ---
 .../streampipes/config/SpConfigChangeCallback.java |  24 -
 .../streampipes/config/backend/BackendConfig.java  | 232 -------
 .../config/backend/BackendConfigKeys.java          |  50 --
 .../config/backend/MessagingSettings.java          |  95 ---
 .../streampipes/config/backend/SpDataFormat.java   |  45 --
 .../streampipes/config/consul/ConsulSpConfig.java  | 265 --------
 .../streampipes/config/consul/MockSpConfig.java    | 125 ----
 .../org/streampipes/config/model/ConfigItem.java   |  81 ---
 .../config/model/ConfigurationScope.java           |  24 -
 .../org/streampipes/config/model/PeConfig.java     |  62 --
 streampipes-connect-container-master/pom.xml       |  10 +-
 .../master/init/AdapterMasterContainer.java        |   4 +-
 .../init/AdapterMasterContainerResourceConfig.java |  24 +-
 .../master/management/AdapterMasterManagement.java |  26 +-
 .../AdapterTemplateMasterManagement.java           |  20 +-
 .../master/management/DescriptionManagement.java   |  18 +-
 .../master/management/FileManagement.java          |   8 +-
 .../master/management/GuessManagement.java         |  16 +-
 .../master/management/SourcesManagement.java       |  34 +-
 .../master/management/UnitMasterManagement.java    |  10 +-
 .../connect/container/master/management/Utils.java |   6 +-
 .../management/WorkerAdministrationManagement.java |  12 +-
 .../master/management/WorkerRestClient.java        |  16 +-
 .../container/master/rest/AdapterResource.java     |  26 +-
 .../master/rest/AdapterTemplateResource.java       |  22 +-
 .../container/master/rest/DescriptionResource.java |  16 +-
 .../container/master/rest/FileResource.java        |   8 +-
 .../container/master/rest/GuessResource.java       |  20 +-
 .../master/rest/RuntimeResolvableResource.java     |  16 +-
 .../container/master/rest/SourcesResource.java     |  26 +-
 .../container/master/rest/UnitResource.java        |  10 +-
 .../container/master/rest/WelcomePageMaster.java   |  16 +-
 .../master/rest/WorkerAdministrationResource.java  |  16 +-
 .../master/util/AdapterEncryptionService.java      |  12 +-
 .../master/AdapterMasterManagementTest.java        |  12 +-
 .../master/DescriptionManagementTest.java          |  12 +-
 .../AdapterTemplateMasterManagementTest.java       |  12 +-
 .../master/management/SourcesManagementTest.java   |  12 +-
 .../management/UnitMasterManagementTest.java       |   8 +-
 .../master/management/WorkerRestClientTest.java    |   8 +-
 streampipes-connect-container-worker/pom.xml       |   4 +-
 .../worker/init/AdapterWorkerContainer.java        |  16 +-
 .../init/AdapterWorkerContainerResourceConfig.java |  14 +-
 .../worker/management/AdapterWorkerManagement.java |  30 +-
 .../worker/management/FileManagement.java          |   2 +-
 .../worker/management/GuessManagement.java         |  16 +-
 .../worker/management/MasterRestClient.java        |   6 +-
 .../container/worker/rest/FileResource.java        |   8 +-
 .../container/worker/rest/GuessResource.java       |  20 +-
 .../worker/rest/RuntimeResolvableResource.java     |  22 +-
 .../container/worker/rest/WelcomePageWorker.java   |  10 +-
 .../container/worker/rest/WorkerResource.java      |  18 +-
 .../management/AdapterWorkerManagementTest.java    | 150 +++++
 .../connect/container/worker/utils/Utils.java      |  78 +++
 .../management/AdapterWorkerManagementTest.java    | 150 -----
 .../connect/container/worker/utils/Utils.java      |  78 ---
 streampipes-connect-container/pom.xml              |  12 +-
 .../streampipes/connect/config/ConfigKeys.java     |  33 +
 .../connect/config/ConnectContainerConfig.java     |  86 +++
 .../connect/init/AdapterContainerConfig.java       |  35 ++
 .../connect/init/AdapterDeclarerSingleton.java     |  97 +++
 .../apache/streampipes/connect/init/Config.java    |  25 +
 .../connect/management/AdapterDeserializer.java    |  41 ++
 .../connect/management/AdapterUtils.java           |  90 +++
 .../connect/management/RuntimeResovable.java       |  59 ++
 .../connect/rest/AbstractContainerResource.java    |  55 ++
 .../streampipes/connect/rest/SpConnectUtils.java   |  23 +
 .../org/streampipes/connect/config/ConfigKeys.java |  33 -
 .../connect/config/ConnectContainerConfig.java     |  86 ---
 .../connect/init/AdapterContainerConfig.java       |  35 --
 .../connect/init/AdapterDeclarerSingleton.java     |  97 ---
 .../java/org/streampipes/connect/init/Config.java  |  25 -
 .../connect/management/AdapterDeserializer.java    |  41 --
 .../connect/management/AdapterUtils.java           |  90 ---
 .../connect/management/RuntimeResovable.java       |  59 --
 .../connect/rest/AbstractContainerResource.java    |  55 --
 .../streampipes/connect/rest/SpConnectUtils.java   |  23 -
 .../src/test/SpConnectResourceTest.java            |  12 +-
 .../src/test/SpConnectTest.java                    |  20 +-
 .../test/java/org/streampipes/connect/Mock.java    |   2 +-
 .../management/AdapterDeserializerTest.java        |   2 +-
 .../connect/management/AdapterUtilsTest.java       |   4 +-
 .../utils/ConnectContainerResourceTest.java        |  14 +-
 .../connect/utils/TestAdapterSerializer.java       |  18 +-
 streampipes-connect/pom.xml                        |  26 +-
 .../streampipes/connect/EmitBinaryEvent.java       |  23 +
 .../org/apache/streampipes/connect/GetNEvents.java |  51 ++
 .../connect/RunningAdapterInstances.java           |  42 ++
 .../apache/streampipes/connect/SendToPipeline.java |  61 ++
 .../streampipes/connect/adapter/Adapter.java       | 170 +++++
 .../connect/adapter/AdapterRegistry.java           |  73 +++
 .../connect/adapter/GroundingService.java          |  80 +++
 .../adapter/exception/AdapterException.java        |  28 +
 .../connect/adapter/exception/ParseException.java  |  28 +
 .../connect/adapter/format/csv/CsvFormat.java      | 138 ++++
 .../connect/adapter/format/csv/CsvParser.java      | 200 ++++++
 .../adapter/format/geojson/GeoJsonFormat.java      | 136 ++++
 .../adapter/format/geojson/GeoJsonParser.java      | 146 +++++
 .../connect/adapter/format/image/ImageFormat.java  |  64 ++
 .../connect/adapter/format/image/ImageParser.java  |  67 ++
 .../adapter/format/json/AbstractJsonFormat.java    |  47 ++
 .../adapter/format/json/arraykey/JsonFormat.java   |  53 ++
 .../adapter/format/json/arraykey/JsonParser.java   | 234 +++++++
 .../format/json/arraynokey/JsonArrayFormat.java    |  48 ++
 .../format/json/arraynokey/JsonArrayParser.java    | 210 +++++++
 .../format/json/object/JsonObjectFormat.java       |  47 ++
 .../format/json/object/JsonObjectParser.java       | 222 +++++++
 .../adapter/format/util/JsonEventProperty.java     |  98 +++
 .../connect/adapter/format/xml/XmlFormat.java      |  90 +++
 .../adapter/format/xml/XmlMapConverter.java        | 103 +++
 .../connect/adapter/format/xml/XmlParser.java      | 139 +++++
 .../adapter/guess/PropertyGuessResults.java        |  40 ++
 .../connect/adapter/guess/PropertyGuesses.java     |  54 ++
 .../connect/adapter/guess/SchemaGuesser.java       | 132 ++++
 .../connect/adapter/model/Connector.java           |  21 +
 .../connect/adapter/model/generic/Format.java      |  49 ++
 .../adapter/model/generic/GenericAdapter.java      | 100 +++
 .../model/generic/GenericDataSetAdapter.java       |  78 +++
 .../model/generic/GenericDataStreamAdapter.java    |  77 +++
 .../connect/adapter/model/generic/Parser.java      |  58 ++
 .../connect/adapter/model/generic/Protocol.java    |  70 +++
 .../adapter/model/pipeline/AdapterPipeline.java    |  71 +++
 .../model/pipeline/AdapterPipelineElement.java     |  27 +
 .../adapter/model/specific/SpecificAdapter.java    |  37 ++
 .../model/specific/SpecificDataSetAdapter.java     |  36 ++
 .../model/specific/SpecificDataStreamAdapter.java  |  37 ++
 .../connect/adapter/preprocessing/Util.java        |  58 ++
 .../elements/AddTimestampPipelineElement.java      |  39 ++
 .../elements/AddValuePipelineElement.java          |  42 ++
 .../elements/DuplicateFilterPipelineElement.java   |  77 +++
 .../elements/SendToKafkaAdapterSink.java           |  82 +++
 .../elements/SendToKafkaReplayAdapterSink.java     |  94 +++
 .../TransformSchemaAdapterPipelineElement.java     |  68 ++
 .../elements/TransformStreamAdapterElement.java    |  69 ++
 .../TransformValueAdapterPipelineElement.java      |  73 +++
 .../transform/TransformationRule.java              |  25 +
 .../schema/CreateNestedTransformationRule.java     |  55 ++
 .../transform/schema/DeleteTransformationRule.java |  54 ++
 .../transform/schema/MoveTransformationRule.java   | 107 ++++
 .../transform/schema/RenameTransformationRule.java |  59 ++
 .../transform/schema/SchemaEventTransformer.java   | 119 ++++
 .../transform/schema/SchemaTransformationRule.java |  24 +
 .../stream/EventRateTransformationRule.java        |  66 ++
 .../transform/stream/StreamEventTransformer.java   |  66 ++
 .../transform/stream/StreamTransformationRule.java |  24 +
 .../value/TimestampTranformationRule.java          |  99 +++
 .../value/TimestampTranformationRuleMode.java      |  26 +
 .../transform/value/UnitTransformationRule.java    |  81 +++
 .../transform/value/ValueEventTransformer.java     |  82 +++
 .../transform/value/ValueTransformationRule.java   |  24 +
 .../connect/adapter/sdk/ParameterExtractor.java    |  82 +++
 .../adapter/util/AdapterOutputCollector.java       |  23 +
 .../connect/adapter/util/PollingSettings.java      |  51 ++
 .../adapter/util/TransportFormatGenerator.java     |  48 ++
 .../adapter/util/TransportFormatSelector.java      |  75 +++
 .../org/streampipes/connect/EmitBinaryEvent.java   |  23 -
 .../java/org/streampipes/connect/GetNEvents.java   |  51 --
 .../connect/RunningAdapterInstances.java           |  42 --
 .../org/streampipes/connect/SendToPipeline.java    |  61 --
 .../org/streampipes/connect/adapter/Adapter.java   | 170 -----
 .../connect/adapter/AdapterRegistry.java           |  73 ---
 .../connect/adapter/GroundingService.java          |  80 ---
 .../adapter/exception/AdapterException.java        |  28 -
 .../connect/adapter/exception/ParseException.java  |  28 -
 .../connect/adapter/format/csv/CsvFormat.java      | 138 ----
 .../connect/adapter/format/csv/CsvParser.java      | 200 ------
 .../adapter/format/geojson/GeoJsonFormat.java      | 136 ----
 .../adapter/format/geojson/GeoJsonParser.java      | 146 -----
 .../connect/adapter/format/image/ImageFormat.java  |  64 --
 .../connect/adapter/format/image/ImageParser.java  |  67 --
 .../adapter/format/json/AbstractJsonFormat.java    |  47 --
 .../adapter/format/json/arraykey/JsonFormat.java   |  53 --
 .../adapter/format/json/arraykey/JsonParser.java   | 234 -------
 .../format/json/arraynokey/JsonArrayFormat.java    |  48 --
 .../format/json/arraynokey/JsonArrayParser.java    | 210 -------
 .../format/json/object/JsonObjectFormat.java       |  47 --
 .../format/json/object/JsonObjectParser.java       | 222 -------
 .../adapter/format/util/JsonEventProperty.java     |  98 ---
 .../connect/adapter/format/xml/XmlFormat.java      |  90 ---
 .../adapter/format/xml/XmlMapConverter.java        | 103 ---
 .../connect/adapter/format/xml/XmlParser.java      | 139 -----
 .../adapter/guess/PropertyGuessResults.java        |  40 --
 .../connect/adapter/guess/PropertyGuesses.java     |  54 --
 .../connect/adapter/guess/SchemaGuesser.java       | 132 ----
 .../connect/adapter/model/Connector.java           |  21 -
 .../connect/adapter/model/generic/Format.java      |  49 --
 .../adapter/model/generic/GenericAdapter.java      | 100 ---
 .../model/generic/GenericDataSetAdapter.java       |  78 ---
 .../model/generic/GenericDataStreamAdapter.java    |  77 ---
 .../connect/adapter/model/generic/Parser.java      |  58 --
 .../connect/adapter/model/generic/Protocol.java    |  70 ---
 .../adapter/model/pipeline/AdapterPipeline.java    |  71 ---
 .../model/pipeline/AdapterPipelineElement.java     |  27 -
 .../adapter/model/specific/SpecificAdapter.java    |  37 --
 .../model/specific/SpecificDataSetAdapter.java     |  36 --
 .../model/specific/SpecificDataStreamAdapter.java  |  37 --
 .../connect/adapter/preprocessing/Util.java        |  58 --
 .../elements/AddTimestampPipelineElement.java      |  39 --
 .../elements/AddValuePipelineElement.java          |  42 --
 .../elements/DuplicateFilterPipelineElement.java   |  77 ---
 .../elements/SendToKafkaAdapterSink.java           |  84 ---
 .../elements/SendToKafkaReplayAdapterSink.java     |  94 ---
 .../TransformSchemaAdapterPipelineElement.java     |  68 --
 .../elements/TransformStreamAdapterElement.java    |  69 --
 .../TransformValueAdapterPipelineElement.java      |  73 ---
 .../transform/TransformationRule.java              |  25 -
 .../schema/CreateNestedTransformationRule.java     |  55 --
 .../transform/schema/DeleteTransformationRule.java |  54 --
 .../transform/schema/MoveTransformationRule.java   | 107 ----
 .../transform/schema/RenameTransformationRule.java |  59 --
 .../transform/schema/SchemaEventTransformer.java   | 119 ----
 .../transform/schema/SchemaTransformationRule.java |  24 -
 .../stream/EventRateTransformationRule.java        |  66 --
 .../transform/stream/StreamEventTransformer.java   |  66 --
 .../transform/stream/StreamTransformationRule.java |  24 -
 .../value/TimestampTranformationRule.java          |  99 ---
 .../value/TimestampTranformationRuleMode.java      |  26 -
 .../transform/value/UnitTransformationRule.java    |  81 ---
 .../transform/value/ValueEventTransformer.java     |  82 ---
 .../transform/value/ValueTransformationRule.java   |  24 -
 .../connect/adapter/sdk/ParameterExtractor.java    |  82 ---
 .../adapter/util/AdapterOutputCollector.java       |  23 -
 .../connect/adapter/util/PollingSettings.java      |  51 --
 .../adapter/util/TransportFormatGenerator.java     |  48 --
 .../adapter/util/TransportFormatSelector.java      |  75 ---
 .../connect/adapter/GroundingServiceTest.java      | 171 +++++
 .../streampipes/connect/adapter/TestUtils.java     |  48 ++
 .../format/json/arraykey/JsonParserTest.java       | 101 +++
 .../json/arraynokey/JsonArrayParserTest.java       | 100 +++
 .../adapter/format/json/geojson/GeoJsonTest.java   | 309 +++++++++
 .../format/json/object/JsonObjectParserTest.java   |  76 +++
 .../connect/adapter/format/json/xml/XmlTest.java   | 384 ++++++++++++
 .../streampipes/connect/adapter/guess/Mock.java    |  26 +
 .../connect/adapter/guess/SchemaGuesserTest.java   | 132 ++++
 .../schema/CreateNestedTransformationRuleTest.java |  66 ++
 .../schema/DeleteTransformationRuleTest.java       |  54 ++
 .../schema/MoveTransformationRuleTest.java         |  86 +++
 .../schema/RenameTransformationRuleTest.java       |  67 ++
 .../schema/SchemaEventTransformerTest.java         |  76 +++
 .../value/TimestampTransformRuleTest.java          | 240 +++++++
 .../transform/value/UnitTransformRuleTest.java     | 135 ++++
 .../transform/value/ValueEventTransformerTest.java |  58 ++
 .../connect/adapter/GroundingServiceTest.java      | 171 -----
 .../org/streampipes/connect/adapter/TestUtils.java |  48 --
 .../format/json/arraykey/JsonParserTest.java       | 101 ---
 .../json/arraynokey/JsonArrayParserTest.java       | 100 ---
 .../adapter/format/json/geojson/GeoJsonTest.java   | 309 ---------
 .../format/json/object/JsonObjectParserTest.java   |  76 ---
 .../connect/adapter/format/json/xml/XmlTest.java   | 384 ------------
 .../streampipes/connect/adapter/guess/Mock.java    |  26 -
 .../connect/adapter/guess/SchemaGuesserTest.java   | 132 ----
 .../schema/CreateNestedTransformationRuleTest.java |  66 --
 .../schema/DeleteTransformationRuleTest.java       |  54 --
 .../schema/MoveTransformationRuleTest.java         |  86 ---
 .../schema/RenameTransformationRuleTest.java       |  67 --
 .../schema/SchemaEventTransformerTest.java         |  76 ---
 .../value/TimestampTransformRuleTest.java          | 240 -------
 .../transform/value/UnitTransformRuleTest.java     | 135 ----
 .../transform/value/ValueEventTransformerTest.java |  58 --
 streampipes-container-base/pom.xml                 |   2 +-
 streampipes-container-embedded/pom.xml             |   4 +-
 .../embedded/init/ContainerModelSubmitter.java     |  55 ++
 .../embedded/init/ContainerModelSubmitter.java     |  55 --
 streampipes-container-standalone/pom.xml           |   6 +-
 .../PipelineElementContainerResourceConfig.java    |  16 +-
 .../standalone/init/StandaloneModelSubmitter.java  |  12 +-
 streampipes-container/pom.xml                      |  10 +-
 .../apache/streampipes/container/api/Element.java  | 246 ++++++++
 .../container/api/InvocableElement.java            | 160 +++++
 .../container/api/PipelineTemplateElement.java     |  34 +
 .../api/ResolvesContainerProvidedOptions.java      |  28 +
 .../ResolvesContainerProvidedOutputStrategy.java   |  29 +
 .../streampipes/container/api/SecElement.java      | 110 ++++
 .../streampipes/container/api/SepElement.java      | 151 +++++
 .../streampipes/container/api/SepaElement.java     |  76 +++
 .../streampipes/container/api/WelcomePage.java     |  59 ++
 .../container/assets/AssetZipGenerator.java        |  73 +++
 .../container/declarer/DataSetDeclarer.java        |  29 +
 .../container/declarer/DataStreamDeclarer.java     |  30 +
 .../streampipes/container/declarer/Declarer.java   |  28 +
 .../container/declarer/EventStreamDeclarer.java    |  25 +
 .../container/declarer/InvocableDeclarer.java      |  30 +
 .../declarer/PipelineTemplateDeclarer.java         |  25 +
 .../declarer/SemanticEventConsumerDeclarer.java    |  26 +
 .../SemanticEventProcessingAgentDeclarer.java      |  26 +
 .../declarer/SemanticEventProducerDeclarer.java    |  27 +
 .../streampipes/container/html/HTMLGenerator.java  |  87 +++
 .../streampipes/container/html/JSONGenerator.java  |  64 ++
 .../container/html/model/AgentDescription.java     |  36 ++
 .../html/model/DataSourceDescriptionHtml.java      |  45 ++
 .../container/html/model/Description.java          |  92 +++
 .../html/page/EventConsumerWelcomePage.java        |  49 ++
 .../html/page/EventProcessingAgentWelcomePage.java |  49 ++
 .../html/page/EventProducerWelcomePage.java        |  63 ++
 .../container/html/page/WelcomePageGenerator.java  |  45 ++
 .../html/page/WelcomePageGeneratorImpl.java        | 114 ++++
 .../container/init/DeclarersSingleton.java         | 235 +++++++
 .../streampipes/container/init/ModelSubmitter.java |  27 +
 .../container/init/RunningDatasetInstances.java    |  55 ++
 .../container/init/RunningInstances.java           |  58 ++
 .../container/locales/LabelGenerator.java          | 149 +++++
 .../model/DataSetReplayFinishedNotifier.java       |  23 +
 .../streampipes/container/model/PeConfig.java      |  28 +
 .../container/transform/Transformer.java           |  48 ++
 .../streampipes/container/util/ConsulUtil.java     | 228 +++++++
 .../streampipes/container/util/DeclarerUtils.java  |  46 ++
 .../streampipes/container/util/ElementInfo.java    |  45 ++
 .../streampipes/container/util/LocalesUtil.java    |  29 +
 .../container/util/StandardTransportFormat.java    |  57 ++
 .../apache/streampipes/container/util/Util.java    |  61 ++
 .../org/streampipes/container/api/Element.java     | 246 --------
 .../container/api/InvocableElement.java            | 160 -----
 .../container/api/PipelineTemplateElement.java     |  34 -
 .../api/ResolvesContainerProvidedOptions.java      |  28 -
 .../ResolvesContainerProvidedOutputStrategy.java   |  29 -
 .../org/streampipes/container/api/SecElement.java  | 111 ----
 .../org/streampipes/container/api/SepElement.java  | 151 -----
 .../org/streampipes/container/api/SepaElement.java |  76 ---
 .../org/streampipes/container/api/WelcomePage.java |  59 --
 .../container/assets/AssetZipGenerator.java        |  73 ---
 .../container/declarer/DataSetDeclarer.java        |  29 -
 .../container/declarer/DataStreamDeclarer.java     |  30 -
 .../streampipes/container/declarer/Declarer.java   |  28 -
 .../container/declarer/EventStreamDeclarer.java    |  25 -
 .../container/declarer/InvocableDeclarer.java      |  30 -
 .../declarer/PipelineTemplateDeclarer.java         |  25 -
 .../declarer/SemanticEventConsumerDeclarer.java    |  26 -
 .../SemanticEventProcessingAgentDeclarer.java      |  26 -
 .../declarer/SemanticEventProducerDeclarer.java    |  27 -
 .../streampipes/container/html/HTMLGenerator.java  |  87 ---
 .../streampipes/container/html/JSONGenerator.java  |  64 --
 .../container/html/model/AgentDescription.java     |  36 --
 .../html/model/DataSourceDescriptionHtml.java      |  45 --
 .../container/html/model/Description.java          |  92 ---
 .../html/page/EventConsumerWelcomePage.java        |  49 --
 .../html/page/EventProcessingAgentWelcomePage.java |  49 --
 .../html/page/EventProducerWelcomePage.java        |  63 --
 .../container/html/page/WelcomePageGenerator.java  |  45 --
 .../html/page/WelcomePageGeneratorImpl.java        | 114 ----
 .../container/init/DeclarersSingleton.java         | 235 -------
 .../streampipes/container/init/ModelSubmitter.java |  27 -
 .../container/init/RunningDatasetInstances.java    |  55 --
 .../container/init/RunningInstances.java           |  58 --
 .../container/locales/LabelGenerator.java          | 149 -----
 .../model/DataSetReplayFinishedNotifier.java       |  23 -
 .../org/streampipes/container/model/PeConfig.java  |  28 -
 .../container/transform/Transformer.java           |  48 --
 .../org/streampipes/container/util/ConsulUtil.java | 228 -------
 .../streampipes/container/util/DeclarerUtils.java  |  46 --
 .../streampipes/container/util/ElementInfo.java    |  45 --
 .../streampipes/container/util/LocalesUtil.java    |  29 -
 .../container/util/StandardTransportFormat.java    |  57 --
 .../java/org/streampipes/container/util/Util.java  |  61 --
 .../html/page/WelcomePageGeneratorImplTest.java    |  24 +-
 .../org/streampipes/container/util/UtilTest.java   |   4 +-
 streampipes-dataformat-cbor/pom.xml                |   6 +-
 .../dataformat/cbor/CborDataFormatDefinition.java  |   6 +-
 .../dataformat/cbor/CborDataFormatFactory.java     |   8 +-
 streampipes-dataformat-fst/pom.xml                 |   6 +-
 .../dataformat/fst/FstDataFormatDefinition.java    |   6 +-
 .../dataformat/fst/FstDataFormatFactory.java       |   8 +-
 streampipes-dataformat-json/pom.xml                |   6 +-
 .../dataformat/json/JsonDataFormatDefinition.java  |   6 +-
 .../dataformat/json/JsonDataFormatFactory.java     |   8 +-
 streampipes-dataformat-smile/pom.xml               |   6 +-
 .../smile/SmileDataFormatDefinition.java           |  55 ++
 .../dataformat/smile/SmileDataFormatFactory.java   |  34 +
 .../smile/SmileDataFormatDefinition.java           |  55 --
 .../dataformat/smile/SmileDataFormatFactory.java   |  34 -
 streampipes-dataformat/pom.xml                     |   4 +-
 .../dataformat/SpDataFormatDefinition.java         |   4 +-
 .../dataformat/SpDataFormatFactory.java            |   4 +-
 .../dataformat/SpDataFormatManager.java            |   4 +-
 streampipes-logging/pom.xml                        |   2 +-
 .../apache/streampipes/logging/LoggerFactory.java  |  31 +
 .../org/apache/streampipes/logging/api/Logger.java |  34 +
 .../logging/impl/EventStatisticLogger.java         |  41 ++
 .../apache/streampipes/logging/impl/PeLogger.java  |  62 ++
 .../org/apache/streampipes/logging/model/Log.java  |  69 ++
 .../streampipes/logging/model/LogRequest.java      |  50 ++
 .../org/streampipes/logging/LoggerFactory.java     |  31 -
 .../java/org/streampipes/logging/api/Logger.java   |  34 -
 .../logging/impl/EventStatisticLogger.java         |  41 --
 .../org/streampipes/logging/impl/PeLogger.java     |  62 --
 .../java/org/streampipes/logging/model/Log.java    |  69 --
 .../org/streampipes/logging/model/LogRequest.java  |  50 --
 streampipes-measurement-units/pom.xml              |   4 +-
 .../apache/streampipes/units/UnitCollector.java    | 134 ++++
 .../org/apache/streampipes/units/UnitProvider.java |  80 +++
 .../java/org/streampipes/units/UnitCollector.java  | 134 ----
 .../java/org/streampipes/units/UnitProvider.java   |  80 ---
 .../test/java/org/streampipes/units/test/Test.java |   4 +-
 .../java/org/streampipes/units/test/Test2.java     |   4 +-
 streampipes-messaging-jms/pom.xml                  |   4 +-
 .../messaging/jms/ActiveMQConnectionProvider.java  |  40 ++
 .../messaging/jms/ActiveMQConsumer.java            |  95 +++
 .../messaging/jms/ActiveMQPublisher.java           | 137 ++++
 .../streampipes/messaging/jms/SpJmsProtocol.java   |  44 ++
 .../messaging/jms/SpJmsProtocolFactory.java        |  42 ++
 .../messaging/jms/ActiveMQConnectionProvider.java  |  40 --
 .../messaging/jms/ActiveMQConsumer.java            |  95 ---
 .../messaging/jms/ActiveMQPublisher.java           | 137 ----
 .../streampipes/messaging/jms/SpJmsProtocol.java   |  44 --
 .../messaging/jms/SpJmsProtocolFactory.java        |  42 --
 streampipes-messaging-kafka/pom.xml                |   4 +-
 .../messaging/kafka/SpKafkaConsumer.java           | 137 ++++
 .../messaging/kafka/SpKafkaProducer.java           | 132 ++++
 .../messaging/kafka/SpKafkaProtocol.java           |  45 ++
 .../messaging/kafka/SpKafkaProtocolFactory.java    |  42 ++
 .../kafka/config/AbstractConfigFactory.java        |  45 ++
 .../kafka/config/ConsumerConfigFactory.java        |  59 ++
 .../kafka/config/ProducerConfigFactory.java        |  59 ++
 .../messaging/kafka/SpKafkaConsumer.java           | 137 ----
 .../messaging/kafka/SpKafkaProducer.java           | 132 ----
 .../messaging/kafka/SpKafkaProtocol.java           |  45 --
 .../messaging/kafka/SpKafkaProtocolFactory.java    |  42 --
 .../kafka/config/AbstractConfigFactory.java        |  45 --
 .../kafka/config/ConsumerConfigFactory.java        |  59 --
 .../kafka/config/ProducerConfigFactory.java        |  59 --
 streampipes-messaging/pom.xml                      |   4 +-
 .../streampipes/messaging/EventConsumer.java       |  32 +
 .../streampipes/messaging/EventProducer.java       |  35 ++
 .../messaging/InternalEventProcessor.java          |  24 +
 .../messaging/SpProtocolDefinition.java            |  28 +
 .../messaging/SpProtocolDefinitionFactory.java     |  30 +
 .../streampipes/messaging/SpProtocolManager.java   |  58 ++
 .../org/streampipes/messaging/EventConsumer.java   |  32 -
 .../org/streampipes/messaging/EventProducer.java   |  35 --
 .../messaging/InternalEventProcessor.java          |  24 -
 .../messaging/SpProtocolDefinition.java            |  28 -
 .../messaging/SpProtocolDefinitionFactory.java     |  30 -
 .../streampipes/messaging/SpProtocolManager.java   |  58 --
 streampipes-model-client/pom.xml                   |   4 +-
 .../apache/streampipes/model/client/Category.java  |  55 ++
 .../model/client/RunningVisualization.java         | 109 ++++
 .../streampipes/model/client/VirtualSensor.java    |  52 ++
 .../assetdashboard/AssetDashboardConfig.java       | 102 +++
 .../client/assetdashboard/CanvasAttributes.java    | 171 +++++
 .../model/client/assetdashboard/CanvasElement.java |  54 ++
 .../model/client/assetdashboard/ImageInfo.java     |  97 +++
 .../model/client/connection/Connection.java        |  48 ++
 .../client/deployment/DeploymentConfiguration.java | 130 ++++
 .../model/client/deployment/DeploymentType.java    |  24 +
 .../model/client/deployment/ElementType.java       |  23 +
 .../model/client/deployment/OutputType.java        |  23 +
 .../model/client/deployment/RuntimeType.java       |  23 +
 .../model/client/endpoint/RdfEndpoint.java         |  57 ++
 .../model/client/endpoint/RdfEndpointItem.java     |  84 +++
 .../exception/InvalidConnectionException.java      |  38 ++
 .../model/client/file/FileMetadata.java            | 102 +++
 .../client/matching/MatchingResultFactory.java     |  31 +
 .../client/matching/MatchingResultMessage.java     |  86 +++
 .../model/client/matching/MatchingResultType.java  |  50 ++
 .../client/messages/AppInstallationMessage.java    |  61 ++
 .../model/client/messages/AutocompleteItem.java    |  52 ++
 .../model/client/messages/AutocompleteResult.java  |  51 ++
 .../model/client/messages/ErrorMessage.java        |  36 ++
 .../model/client/messages/ErrorMessageLd.java      |  46 ++
 .../streampipes/model/client/messages/Message.java |  88 +++
 .../model/client/messages/MessageLd.java           | 136 ++++
 .../model/client/messages/Notification.java        |  71 +++
 .../model/client/messages/NotificationLd.java      | 110 ++++
 .../model/client/messages/NotificationType.java    |  93 +++
 .../model/client/messages/Notifications.java       |  98 +++
 .../messages/ProaSenseNotificationMessage.java     | 113 ++++
 .../model/client/messages/SetupStatusMessage.java  |  73 +++
 .../model/client/messages/SuccessMessage.java      |  40 ++
 .../model/client/messages/SuccessMessageLd.java    |  42 ++
 .../model/client/monitoring/JobReport.java         |  65 ++
 .../model/client/monitoring/TaskReport.java        |  57 ++
 .../monitoring/pipeline/AbstractBurrowInfo.java    |  49 ++
 .../pipeline/BurrowConsumerGroupStatus.java        | 100 +++
 .../pipeline/BurrowConsumerGroupStatusInfo.java    |  39 ++
 .../monitoring/pipeline/BurrowConsumerInfo.java    |  45 ++
 .../monitoring/pipeline/BurrowTopicInfo.java       |  40 ++
 .../pipeline/PipelineExecutionStatus.java          |  25 +
 .../streampipes/model/client/ontology/Concept.java |  52 ++
 .../streampipes/model/client/ontology/Context.java |  65 ++
 .../model/client/ontology/ElementHeader.java       |  70 +++
 .../model/client/ontology/ElementType.java         |  23 +
 .../model/client/ontology/EnumeratedRange.java     |  44 ++
 .../model/client/ontology/EnumeratedValue.java     |  47 ++
 .../model/client/ontology/Instance.java            |  50 ++
 .../model/client/ontology/Namespace.java           |  46 ++
 .../model/client/ontology/NodeType.java            |  23 +
 .../model/client/ontology/OntologyElement.java     |  68 ++
 .../model/client/ontology/OntologyNode.java        | 114 ++++
 .../model/client/ontology/OntologyQuery.java       |  54 ++
 .../model/client/ontology/OntologyQueryItem.java   |  49 ++
 .../client/ontology/OntologyQueryResponse.java     |  67 ++
 .../model/client/ontology/PrimitiveRange.java      |  54 ++
 .../model/client/ontology/Property.java            |  83 +++
 .../client/ontology/QuantitativeValueRange.java    |  67 ++
 .../streampipes/model/client/ontology/Range.java   |  57 ++
 .../model/client/ontology/RangeType.java           |  24 +
 .../model/client/ontology/RdfFormat.java           |  23 +
 .../model/client/ontology/Resource.java            |  54 ++
 .../model/client/ontology/Statement.java           |  50 ++
 .../pipeline/DataSetModificationMessage.java       |  50 ++
 .../model/client/pipeline/ElementComposition.java  |  79 +++
 .../model/client/pipeline/Pipeline.java            | 148 +++++
 .../model/client/pipeline/PipelineCategory.java    |  74 +++
 .../pipeline/PipelineElementRecommendation.java    |  79 +++
 .../PipelineElementRecommendationMessage.java      |  69 ++
 .../client/pipeline/PipelineElementStatus.java     |  54 ++
 .../client/pipeline/PipelineModification.java      |  94 +++
 .../PipelineModificationErrorDescription.java      |  42 ++
 .../pipeline/PipelineModificationMessage.java      |  70 +++
 .../client/pipeline/PipelineOperationStatus.java   |  93 +++
 .../client/pipeline/PipelineStatusMessage.java     |  64 ++
 .../client/pipeline/PipelineStatusMessageType.java |  46 ++
 .../ContainerProvidedOptionsParameterRequest.java  |  84 +++
 .../model/client/security/Permission.java          |  22 +
 .../streampipes/model/client/security/Role.java    |  22 +
 .../streampipes/model/client/security/Subject.java |  26 +
 .../streampipes/model/client/security/User.java    |  22 +
 .../model/client/setup/InitialSettings.java        | 100 +++
 .../streampipes/model/client/user/Authc.java       |  44 ++
 .../streampipes/model/client/user/Authz.java       |  47 ++
 .../streampipes/model/client/user/Credentials.java |  38 ++
 .../streampipes/model/client/user/Element.java     |  48 ++
 .../apache/streampipes/model/client/user/Info.java |  51 ++
 .../streampipes/model/client/user/Principal.java   |  48 ++
 .../model/client/user/RegistrationData.java        |  73 +++
 .../apache/streampipes/model/client/user/Role.java |  24 +
 .../client/user/ShiroAuthenticationRequest.java    |  46 ++
 .../client/user/ShiroAuthenticationResponse.java   |  65 ++
 .../user/ShiroAuthenticationResponseFactory.java   |  40 ++
 .../streampipes/model/client/user/Token.java       |  50 ++
 .../apache/streampipes/model/client/user/User.java | 245 ++++++++
 .../streampipes/model/client/util/DatasetUtil.java |  32 +
 .../streampipes/model/client/version/ItemType.java |  24 +
 .../model/client/version/SystemInfo.java           | 135 ++++
 .../model/client/version/VersionInfo.java          |  53 ++
 .../model/client/version/VersionedItem.java        |  55 ++
 .../org/streampipes/model/client/Category.java     |  55 --
 .../model/client/RunningVisualization.java         | 109 ----
 .../streampipes/model/client/VirtualSensor.java    |  52 --
 .../assetdashboard/AssetDashboardConfig.java       | 102 ---
 .../client/assetdashboard/CanvasAttributes.java    | 171 -----
 .../model/client/assetdashboard/CanvasElement.java |  54 --
 .../model/client/assetdashboard/ImageInfo.java     |  97 ---
 .../model/client/connection/Connection.java        |  48 --
 .../client/deployment/DeploymentConfiguration.java | 130 ----
 .../model/client/deployment/DeploymentType.java    |  24 -
 .../model/client/deployment/ElementType.java       |  23 -
 .../model/client/deployment/OutputType.java        |  23 -
 .../model/client/deployment/RuntimeType.java       |  23 -
 .../model/client/endpoint/RdfEndpoint.java         |  57 --
 .../model/client/endpoint/RdfEndpointItem.java     |  84 ---
 .../exception/InvalidConnectionException.java      |  38 --
 .../model/client/file/FileMetadata.java            | 102 ---
 .../client/matching/MatchingResultFactory.java     |  31 -
 .../client/matching/MatchingResultMessage.java     |  86 ---
 .../model/client/matching/MatchingResultType.java  |  50 --
 .../client/messages/AppInstallationMessage.java    |  61 --
 .../model/client/messages/AutocompleteItem.java    |  52 --
 .../model/client/messages/AutocompleteResult.java  |  51 --
 .../model/client/messages/ErrorMessage.java        |  36 --
 .../model/client/messages/ErrorMessageLd.java      |  47 --
 .../streampipes/model/client/messages/Message.java |  88 ---
 .../model/client/messages/MessageLd.java           | 136 ----
 .../model/client/messages/Notification.java        |  71 ---
 .../model/client/messages/NotificationLd.java      | 110 ----
 .../model/client/messages/NotificationType.java    |  93 ---
 .../model/client/messages/Notifications.java       |  98 ---
 .../messages/ProaSenseNotificationMessage.java     | 113 ----
 .../model/client/messages/SetupStatusMessage.java  |  73 ---
 .../model/client/messages/SuccessMessage.java      |  40 --
 .../model/client/messages/SuccessMessageLd.java    |  42 --
 .../model/client/monitoring/JobReport.java         |  65 --
 .../model/client/monitoring/TaskReport.java        |  57 --
 .../monitoring/pipeline/AbstractBurrowInfo.java    |  49 --
 .../pipeline/BurrowConsumerGroupStatus.java        | 100 ---
 .../pipeline/BurrowConsumerGroupStatusInfo.java    |  39 --
 .../monitoring/pipeline/BurrowConsumerInfo.java    |  45 --
 .../monitoring/pipeline/BurrowTopicInfo.java       |  40 --
 .../pipeline/PipelineExecutionStatus.java          |  25 -
 .../streampipes/model/client/ontology/Concept.java |  52 --
 .../streampipes/model/client/ontology/Context.java |  65 --
 .../model/client/ontology/ElementHeader.java       |  70 ---
 .../model/client/ontology/ElementType.java         |  23 -
 .../model/client/ontology/EnumeratedRange.java     |  44 --
 .../model/client/ontology/EnumeratedValue.java     |  47 --
 .../model/client/ontology/Instance.java            |  50 --
 .../model/client/ontology/Namespace.java           |  46 --
 .../model/client/ontology/NodeType.java            |  23 -
 .../model/client/ontology/OntologyElement.java     |  68 --
 .../model/client/ontology/OntologyNode.java        | 114 ----
 .../model/client/ontology/OntologyQuery.java       |  54 --
 .../model/client/ontology/OntologyQueryItem.java   |  49 --
 .../client/ontology/OntologyQueryResponse.java     |  67 --
 .../model/client/ontology/PrimitiveRange.java      |  54 --
 .../model/client/ontology/Property.java            |  83 ---
 .../client/ontology/QuantitativeValueRange.java    |  67 --
 .../streampipes/model/client/ontology/Range.java   |  57 --
 .../model/client/ontology/RangeType.java           |  24 -
 .../model/client/ontology/RdfFormat.java           |  23 -
 .../model/client/ontology/Resource.java            |  54 --
 .../model/client/ontology/Statement.java           |  50 --
 .../pipeline/DataSetModificationMessage.java       |  50 --
 .../model/client/pipeline/ElementComposition.java  |  79 ---
 .../model/client/pipeline/Pipeline.java            | 148 -----
 .../model/client/pipeline/PipelineCategory.java    |  74 ---
 .../pipeline/PipelineElementRecommendation.java    |  79 ---
 .../PipelineElementRecommendationMessage.java      |  69 --
 .../client/pipeline/PipelineElementStatus.java     |  54 --
 .../client/pipeline/PipelineModification.java      |  94 ---
 .../PipelineModificationErrorDescription.java      |  42 --
 .../pipeline/PipelineModificationMessage.java      |  70 ---
 .../client/pipeline/PipelineOperationStatus.java   |  93 ---
 .../client/pipeline/PipelineStatusMessage.java     |  64 --
 .../client/pipeline/PipelineStatusMessageType.java |  46 --
 .../ContainerProvidedOptionsParameterRequest.java  |  84 ---
 .../model/client/security/Permission.java          |  22 -
 .../streampipes/model/client/security/Role.java    |  22 -
 .../streampipes/model/client/security/Subject.java |  26 -
 .../streampipes/model/client/security/User.java    |  22 -
 .../model/client/setup/InitialSettings.java        | 100 ---
 .../org/streampipes/model/client/user/Authc.java   |  44 --
 .../org/streampipes/model/client/user/Authz.java   |  47 --
 .../streampipes/model/client/user/Credentials.java |  38 --
 .../org/streampipes/model/client/user/Element.java |  48 --
 .../org/streampipes/model/client/user/Info.java    |  51 --
 .../streampipes/model/client/user/Principal.java   |  48 --
 .../model/client/user/RegistrationData.java        |  73 ---
 .../org/streampipes/model/client/user/Role.java    |  24 -
 .../client/user/ShiroAuthenticationRequest.java    |  46 --
 .../client/user/ShiroAuthenticationResponse.java   |  65 --
 .../user/ShiroAuthenticationResponseFactory.java   |  40 --
 .../org/streampipes/model/client/user/Token.java   |  50 --
 .../org/streampipes/model/client/user/User.java    | 245 --------
 .../streampipes/model/client/util/DatasetUtil.java |  32 -
 .../streampipes/model/client/version/ItemType.java |  24 -
 .../model/client/version/SystemInfo.java           | 135 ----
 .../model/client/version/VersionInfo.java          |  53 --
 .../model/client/version/VersionedItem.java        |  55 --
 streampipes-model/pom.xml                          |   8 +-
 .../org/apache/streampipes/model/AdapterType.java  |  46 ++
 .../apache/streampipes/model/ApplicationLink.java  | 107 ++++
 .../streampipes/model/DataProcessorType.java       |  49 ++
 .../org/apache/streampipes/model/DataSinkType.java |  46 ++
 .../org/apache/streampipes/model/Notification.java | 103 +++
 .../org/apache/streampipes/model/Response.java     |  95 +++
 .../org/apache/streampipes/model/SpDataSet.java    | 116 ++++
 .../org/apache/streampipes/model/SpDataStream.java | 193 ++++++
 .../streampipes/model/SpDataStreamContainer.java   |  60 ++
 .../model/base/AbstractStreamPipesEntity.java      |  64 ++
 .../model/base/ConsumableStreamPipesEntity.java    | 106 ++++
 .../model/base/InvocableStreamPipesEntity.java     | 169 +++++
 .../model/base/NamedStreamPipesEntity.java         | 242 +++++++
 .../apache/streampipes/model/base/Namespaces.java  |  31 +
 .../model/base/UnnamedStreamPipesEntity.java       |  65 ++
 .../streampipes/model/connect/ListDescription.java |  56 ++
 .../model/connect/adapter/AdapterDescription.java  | 243 ++++++++
 .../connect/adapter/AdapterDescriptionList.java    |  59 ++
 .../connect/adapter/AdapterSetDescription.java     |  66 ++
 .../connect/adapter/AdapterStreamDescription.java  |  57 ++
 .../connect/adapter/GenericAdapterDescription.java |  39 ++
 .../adapter/GenericAdapterSetDescription.java      |  96 +++
 .../adapter/GenericAdapterStreamDescription.java   |  86 +++
 .../adapter/SpecificAdapterSetDescription.java     |  37 ++
 .../adapter/SpecificAdapterStreamDescription.java  |  37 ++
 .../model/connect/grounding/FormatDescription.java | 133 ++++
 .../connect/grounding/FormatDescriptionList.java   |  75 +++
 .../connect/grounding/ProtocolDescription.java     | 109 ++++
 .../connect/grounding/ProtocolDescriptionList.java |  71 +++
 .../connect/grounding/ProtocolSetDescription.java  |  47 ++
 .../grounding/ProtocolStreamDescription.java       |  47 ++
 .../connect/guess/DomainPropertyProbability.java   |  64 ++
 .../guess/DomainPropertyProbabilityList.java       |  70 +++
 .../model/connect/guess/GuessSchema.java           |  83 +++
 .../rules/Schema/CreateNestedRuleDescription.java  |  56 ++
 .../rules/Schema/DeleteRuleDescription.java        |  57 ++
 .../connect/rules/Schema/MoveRuleDescription.java  |  71 +++
 .../rules/Schema/RenameRuleDescription.java        |  70 +++
 .../SchemaTransformationRuleDescription.java       |  33 +
 .../EventRateTransformationRuleDescription.java    |  66 ++
 ...oveDuplicatesTransformationRuleDescription.java |  53 ++
 .../StreamTransformationRuleDescription.java       |  33 +
 .../rules/TransformationRuleDescription.java       |  41 ++
 .../rules/value/AddTimestampRuleDescription.java   |  52 ++
 .../AddValueTransformationRuleDescription.java     |  64 ++
 .../TimestampTranfsformationRuleDescription.java   |  96 +++
 .../value/TimestampTransformationRuleMode.java     |  25 +
 .../rules/value/UnitTransformRuleDescription.java  |  83 +++
 .../value/ValueTransformationRuleDescription.java  |  32 +
 .../model/connect/unit/UnitDescription.java        |  50 ++
 .../connect/worker/ConnectWorkerContainer.java     | 111 ++++
 .../model/constants/PropertySelectorConstants.java |  29 +
 .../model/datalake/DataLakeMeasure.java            |  52 ++
 .../model/graph/DataProcessorDescription.java      | 116 ++++
 .../model/graph/DataProcessorInvocation.java       | 151 +++++
 .../model/graph/DataSinkDescription.java           |  80 +++
 .../model/graph/DataSinkInvocation.java            |  93 +++
 .../model/graph/DataSourceDescription.java         |  97 +++
 .../model/graph/PipelineElementContainer.java      |  62 ++
 .../model/grounding/EventGrounding.java            |  96 +++
 .../model/grounding/JmsTransportProtocol.java      |  65 ++
 .../model/grounding/KafkaTransportProtocol.java    | 167 +++++
 .../model/grounding/SimpleTopicDefinition.java     |  42 ++
 .../model/grounding/TopicDefinition.java           |  58 ++
 .../model/grounding/TopicParameterType.java        |  28 +
 .../model/grounding/TransportFormat.java           |  74 +++
 .../model/grounding/TransportProtocol.java         |  96 +++
 .../model/grounding/WildcardTopicDefinition.java   |  77 +++
 .../model/grounding/WildcardTopicMapping.java      |  90 +++
 .../monitoring/ElementStatusInfoSettings.java      | 109 ++++
 .../model/monitoring/StreamPipesRuntimeError.java  |  51 ++
 .../model/monitoring/StreamPipesStatistics.java    |  22 +
 .../model/output/AppendOutputStrategy.java         |  70 +++
 .../model/output/CustomOutputStrategy.java         |  95 +++
 .../output/CustomTransformOutputStrategy.java      |  62 ++
 .../model/output/FixedOutputStrategy.java          |  67 ++
 .../model/output/KeepOutputStrategy.java           |  76 +++
 .../model/output/ListOutputStrategy.java           |  59 ++
 .../streampipes/model/output/OutputStrategy.java   |  82 +++
 .../model/output/PropertyRenameRule.java           |  70 +++
 .../model/output/TransformOperation.java           | 103 +++
 .../model/output/TransformOperationType.java       |  28 +
 .../model/output/TransformOutputStrategy.java      |  59 ++
 .../apache/streampipes/model/quality/Accuracy.java |  58 ++
 .../quality/EventPropertyQualityDefinition.java    |  41 ++
 .../quality/EventPropertyQualityRequirement.java   |  82 +++
 .../quality/EventStreamQualityDefinition.java      |  43 ++
 .../quality/EventStreamQualityRequirement.java     |  79 +++
 .../streampipes/model/quality/Frequency.java       |  63 ++
 .../apache/streampipes/model/quality/Latency.java  |  73 +++
 .../model/quality/MeasurementCapability.java       |  62 ++
 .../model/quality/MeasurementObject.java           |  62 ++
 .../model/quality/MeasurementProperty.java         |  41 ++
 .../model/quality/MeasurementRange.java            |  72 +++
 .../streampipes/model/quality/Precision.java       |  58 ++
 .../streampipes/model/quality/Resolution.java      |  58 ++
 .../model/runtime/DataSetStatusMessage.java        |  66 ++
 .../apache/streampipes/model/runtime/Event.java    | 217 +++++++
 .../streampipes/model/runtime/EventConverter.java  |  75 +++
 .../streampipes/model/runtime/EventFactory.java    | 160 +++++
 .../streampipes/model/runtime/RuntimeOptions.java  |  49 ++
 .../model/runtime/RuntimeOptionsRequest.java       | 102 +++
 .../model/runtime/RuntimeOptionsResponse.java      |  58 ++
 .../streampipes/model/runtime/SchemaInfo.java      |  43 ++
 .../streampipes/model/runtime/SourceInfo.java      |  40 ++
 .../model/runtime/field/AbstractField.java         | 102 +++
 .../model/runtime/field/FieldParser.java           |  23 +
 .../streampipes/model/runtime/field/ListField.java |  60 ++
 .../model/runtime/field/NestedField.java           |  86 +++
 .../model/runtime/field/PrimitiveField.java        |  50 ++
 .../streampipes/model/schema/Enumeration.java      |  95 +++
 .../streampipes/model/schema/EventProperty.java    | 224 +++++++
 .../model/schema/EventPropertyList.java            |  78 +++
 .../model/schema/EventPropertyNested.java          |  81 +++
 .../model/schema/EventPropertyPrimitive.java       | 107 ++++
 .../streampipes/model/schema/EventSchema.java      |  76 +++
 .../streampipes/model/schema/PropertyScope.java    |  59 ++
 .../model/schema/QuantitativeValue.java            |  84 +++
 .../model/schema/ValueSpecification.java           |  43 ++
 .../model/staticproperty/AnyStaticProperty.java    |  54 ++
 .../staticproperty/CollectionStaticProperty.java   |  98 +++
 .../model/staticproperty/DomainStaticProperty.java |  83 +++
 .../model/staticproperty/FileStaticProperty.java   |  68 ++
 .../staticproperty/FreeTextStaticProperty.java     | 165 +++++
 .../model/staticproperty/MappingProperty.java      | 119 ++++
 .../model/staticproperty/MappingPropertyNary.java  |  73 +++
 .../model/staticproperty/MappingPropertyUnary.java |  61 ++
 .../staticproperty/MatchingStaticProperty.java     |  78 +++
 .../model/staticproperty/OneOfStaticProperty.java  |  54 ++
 .../streampipes/model/staticproperty/Option.java   |  98 +++
 .../staticproperty/PropertyValueSpecification.java |  88 +++
 .../staticproperty/RemoteOneOfStaticProperty.java  | 132 ++++
 .../RuntimeResolvableAnyStaticProperty.java        |  60 ++
 .../RuntimeResolvableOneOfStaticProperty.java      |  60 ++
 .../model/staticproperty/SecretStaticProperty.java |  65 ++
 .../staticproperty/SelectionStaticProperty.java    |  72 +++
 .../model/staticproperty/StaticProperty.java       | 145 +++++
 .../staticproperty/StaticPropertyAlternative.java  |  76 +++
 .../staticproperty/StaticPropertyAlternatives.java |  66 ++
 .../model/staticproperty/StaticPropertyGroup.java  |  70 +++
 .../model/staticproperty/StaticPropertyType.java   |  38 ++
 .../model/staticproperty/SupportedProperty.java    |  85 +++
 .../model/template/BoundPipelineElement.java       |  73 +++
 .../template/PipelineTemplateDescription.java      | 115 ++++
 .../PipelineTemplateDescriptionContainer.java      |  58 ++
 .../model/template/PipelineTemplateInvocation.java | 107 ++++
 .../org/apache/streampipes/model/user/User.java    |  77 +++
 .../org/apache/streampipes/model/util/Cloner.java  | 356 +++++++++++
 .../apache/streampipes/model/util/ModelUtils.java  |  72 +++
 .../streampipes/model/util/PropertyUtils.java      |  85 +++
 .../apache/streampipes/model/util/SchemaUtils.java |  56 ++
 .../java/org/streampipes/model/AdapterType.java    |  46 --
 .../org/streampipes/model/ApplicationLink.java     | 107 ----
 .../org/streampipes/model/DataProcessorType.java   |  49 --
 .../java/org/streampipes/model/DataSinkType.java   |  46 --
 .../java/org/streampipes/model/Notification.java   | 103 ---
 .../main/java/org/streampipes/model/Response.java  |  95 ---
 .../main/java/org/streampipes/model/SpDataSet.java | 116 ----
 .../java/org/streampipes/model/SpDataStream.java   | 193 ------
 .../streampipes/model/SpDataStreamContainer.java   |  60 --
 .../model/base/AbstractStreamPipesEntity.java      |  64 --
 .../model/base/ConsumableStreamPipesEntity.java    | 106 ----
 .../model/base/InvocableStreamPipesEntity.java     | 169 -----
 .../model/base/NamedStreamPipesEntity.java         | 242 -------
 .../org/streampipes/model/base/Namespaces.java     |  31 -
 .../model/base/UnnamedStreamPipesEntity.java       |  65 --
 .../streampipes/model/connect/ListDescription.java |  56 --
 .../model/connect/adapter/AdapterDescription.java  | 243 --------
 .../connect/adapter/AdapterDescriptionList.java    |  60 --
 .../connect/adapter/AdapterSetDescription.java     |  66 --
 .../connect/adapter/AdapterStreamDescription.java  |  57 --
 .../connect/adapter/GenericAdapterDescription.java |  39 --
 .../adapter/GenericAdapterSetDescription.java      |  96 ---
 .../adapter/GenericAdapterStreamDescription.java   |  86 ---
 .../adapter/SpecificAdapterSetDescription.java     |  37 --
 .../adapter/SpecificAdapterStreamDescription.java  |  37 --
 .../model/connect/grounding/FormatDescription.java | 133 ----
 .../connect/grounding/FormatDescriptionList.java   |  75 ---
 .../connect/grounding/ProtocolDescription.java     | 109 ----
 .../connect/grounding/ProtocolDescriptionList.java |  71 ---
 .../connect/grounding/ProtocolSetDescription.java  |  47 --
 .../grounding/ProtocolStreamDescription.java       |  47 --
 .../connect/guess/DomainPropertyProbability.java   |  64 --
 .../guess/DomainPropertyProbabilityList.java       |  70 ---
 .../model/connect/guess/GuessSchema.java           |  84 ---
 .../rules/Schema/CreateNestedRuleDescription.java  |  56 --
 .../rules/Schema/DeleteRuleDescription.java        |  57 --
 .../connect/rules/Schema/MoveRuleDescription.java  |  71 ---
 .../rules/Schema/RenameRuleDescription.java        |  71 ---
 .../SchemaTransformationRuleDescription.java       |  33 -
 .../EventRateTransformationRuleDescription.java    |  66 --
 ...oveDuplicatesTransformationRuleDescription.java |  54 --
 .../StreamTransformationRuleDescription.java       |  33 -
 .../rules/TransformationRuleDescription.java       |  41 --
 .../rules/value/AddTimestampRuleDescription.java   |  52 --
 .../AddValueTransformationRuleDescription.java     |  64 --
 .../TimestampTranfsformationRuleDescription.java   |  96 ---
 .../value/TimestampTransformationRuleMode.java     |  25 -
 .../rules/value/UnitTransformRuleDescription.java  |  83 ---
 .../value/ValueTransformationRuleDescription.java  |  32 -
 .../model/connect/unit/UnitDescription.java        |  50 --
 .../connect/worker/ConnectWorkerContainer.java     | 111 ----
 .../model/constants/PropertySelectorConstants.java |  29 -
 .../model/datalake/DataLakeMeasure.java            |  52 --
 .../model/graph/DataProcessorDescription.java      | 116 ----
 .../model/graph/DataProcessorInvocation.java       | 151 -----
 .../model/graph/DataSinkDescription.java           |  80 ---
 .../model/graph/DataSinkInvocation.java            |  93 ---
 .../model/graph/DataSourceDescription.java         |  97 ---
 .../model/graph/PipelineElementContainer.java      |  62 --
 .../model/grounding/EventGrounding.java            |  96 ---
 .../model/grounding/JmsTransportProtocol.java      |  65 --
 .../model/grounding/KafkaTransportProtocol.java    | 167 -----
 .../model/grounding/SimpleTopicDefinition.java     |  42 --
 .../model/grounding/TopicDefinition.java           |  58 --
 .../model/grounding/TopicParameterType.java        |  28 -
 .../model/grounding/TransportFormat.java           |  74 ---
 .../model/grounding/TransportProtocol.java         |  96 ---
 .../model/grounding/WildcardTopicDefinition.java   |  77 ---
 .../model/grounding/WildcardTopicMapping.java      |  90 ---
 .../monitoring/ElementStatusInfoSettings.java      | 109 ----
 .../model/monitoring/StreamPipesRuntimeError.java  |  51 --
 .../model/monitoring/StreamPipesStatistics.java    |  22 -
 .../model/output/AppendOutputStrategy.java         |  70 ---
 .../model/output/CustomOutputStrategy.java         |  95 ---
 .../output/CustomTransformOutputStrategy.java      |  62 --
 .../model/output/FixedOutputStrategy.java          |  67 --
 .../model/output/KeepOutputStrategy.java           |  76 ---
 .../model/output/ListOutputStrategy.java           |  59 --
 .../streampipes/model/output/OutputStrategy.java   |  82 ---
 .../model/output/PropertyRenameRule.java           |  70 ---
 .../model/output/TransformOperation.java           | 103 ---
 .../model/output/TransformOperationType.java       |  28 -
 .../model/output/TransformOutputStrategy.java      |  59 --
 .../org/streampipes/model/quality/Accuracy.java    |  58 --
 .../quality/EventPropertyQualityDefinition.java    |  41 --
 .../quality/EventPropertyQualityRequirement.java   |  82 ---
 .../quality/EventStreamQualityDefinition.java      |  43 --
 .../quality/EventStreamQualityRequirement.java     |  79 ---
 .../org/streampipes/model/quality/Frequency.java   |  63 --
 .../org/streampipes/model/quality/Latency.java     |  73 ---
 .../model/quality/MeasurementCapability.java       |  62 --
 .../model/quality/MeasurementObject.java           |  62 --
 .../model/quality/MeasurementProperty.java         |  41 --
 .../model/quality/MeasurementRange.java            |  72 ---
 .../org/streampipes/model/quality/Precision.java   |  58 --
 .../org/streampipes/model/quality/Resolution.java  |  58 --
 .../model/runtime/DataSetStatusMessage.java        |  66 --
 .../java/org/streampipes/model/runtime/Event.java  | 217 -------
 .../streampipes/model/runtime/EventConverter.java  |  75 ---
 .../streampipes/model/runtime/EventFactory.java    | 160 -----
 .../streampipes/model/runtime/RuntimeOptions.java  |  49 --
 .../model/runtime/RuntimeOptionsRequest.java       | 102 ---
 .../model/runtime/RuntimeOptionsResponse.java      |  58 --
 .../org/streampipes/model/runtime/SchemaInfo.java  |  43 --
 .../org/streampipes/model/runtime/SourceInfo.java  |  40 --
 .../model/runtime/field/AbstractField.java         | 102 ---
 .../model/runtime/field/FieldParser.java           |  23 -
 .../streampipes/model/runtime/field/ListField.java |  60 --
 .../model/runtime/field/NestedField.java           |  86 ---
 .../model/runtime/field/PrimitiveField.java        |  50 --
 .../org/streampipes/model/schema/Enumeration.java  |  95 ---
 .../streampipes/model/schema/EventProperty.java    | 224 -------
 .../model/schema/EventPropertyList.java            |  78 ---
 .../model/schema/EventPropertyNested.java          |  81 ---
 .../model/schema/EventPropertyPrimitive.java       | 107 ----
 .../org/streampipes/model/schema/EventSchema.java  |  76 ---
 .../streampipes/model/schema/PropertyScope.java    |  59 --
 .../model/schema/QuantitativeValue.java            |  84 ---
 .../model/schema/ValueSpecification.java           |  43 --
 .../model/staticproperty/AnyStaticProperty.java    |  54 --
 .../staticproperty/CollectionStaticProperty.java   |  98 ---
 .../model/staticproperty/DomainStaticProperty.java |  83 ---
 .../model/staticproperty/FileStaticProperty.java   |  68 --
 .../staticproperty/FreeTextStaticProperty.java     | 165 -----
 .../model/staticproperty/MappingProperty.java      | 119 ----
 .../model/staticproperty/MappingPropertyNary.java  |  73 ---
 .../model/staticproperty/MappingPropertyUnary.java |  61 --
 .../staticproperty/MatchingStaticProperty.java     |  78 ---
 .../model/staticproperty/OneOfStaticProperty.java  |  54 --
 .../streampipes/model/staticproperty/Option.java   |  98 ---
 .../staticproperty/PropertyValueSpecification.java |  88 ---
 .../staticproperty/RemoteOneOfStaticProperty.java  | 132 ----
 .../RuntimeResolvableAnyStaticProperty.java        |  60 --
 .../RuntimeResolvableOneOfStaticProperty.java      |  60 --
 .../model/staticproperty/SecretStaticProperty.java |  65 --
 .../staticproperty/SelectionStaticProperty.java    |  72 ---
 .../model/staticproperty/StaticProperty.java       | 145 -----
 .../staticproperty/StaticPropertyAlternative.java  |  76 ---
 .../staticproperty/StaticPropertyAlternatives.java |  67 --
 .../model/staticproperty/StaticPropertyGroup.java  |  70 ---
 .../model/staticproperty/StaticPropertyType.java   |  38 --
 .../model/staticproperty/SupportedProperty.java    |  85 ---
 .../model/template/BoundPipelineElement.java       |  73 ---
 .../template/PipelineTemplateDescription.java      | 115 ----
 .../PipelineTemplateDescriptionContainer.java      |  58 --
 .../model/template/PipelineTemplateInvocation.java | 107 ----
 .../main/java/org/streampipes/model/user/User.java |  77 ---
 .../java/org/streampipes/model/util/Cloner.java    | 356 -----------
 .../org/streampipes/model/util/ModelUtils.java     |  72 ---
 .../org/streampipes/model/util/PropertyUtils.java  |  85 ---
 .../org/streampipes/model/util/SchemaUtils.java    |  56 --
 .../org/apache/streampipes/model/ResponseTest.java |  45 ++
 .../model/builder/TestStreamBuilder.java           |  23 +
 .../connect/adapter/AdapterDescriptionTest.java    |  70 +++
 .../model/runtime/RuntimeTestUtils.java            |  91 +++
 .../streampipes/model/runtime/TestEvent.java       | 117 ++++
 .../model/runtime/TestEventConverter.java          |  56 ++
 .../model/runtime/TestEventFactory.java            |  48 ++
 .../model/runtime/TestFieldAddition.java           |  43 ++
 .../streampipes/model/runtime/TestListField.java   |  41 ++
 .../model/runtime/TestPropertyRenaming.java        |  68 ++
 .../streampipes/model/runtime/TestSubset.java      |  61 ++
 .../java/org/streampipes/model/ResponseTest.java   |  45 --
 .../model/builder/TestStreamBuilder.java           |  23 -
 .../connect/adapter/AdapterDescriptionTest.java    |  73 ---
 .../model/runtime/RuntimeTestUtils.java            |  91 ---
 .../org/streampipes/model/runtime/TestEvent.java   | 117 ----
 .../model/runtime/TestEventConverter.java          |  56 --
 .../model/runtime/TestEventFactory.java            |  48 --
 .../model/runtime/TestFieldAddition.java           |  43 --
 .../streampipes/model/runtime/TestListField.java   |  41 --
 .../model/runtime/TestPropertyRenaming.java        |  68 --
 .../org/streampipes/model/runtime/TestSubset.java  |  61 --
 streampipes-performance-tests/pom.xml              |  10 +-
 .../streampipes/performance/PerformanceTest.java   |  26 +
 .../performance/PipelinePerformanceTest.java       |  59 ++
 .../performance/dataprovider/DataProvider.java     |  26 +
 .../performance/dataprovider/JsonDataProvider.java | 109 ++++
 .../dataprovider/SimpleSchemaProvider.java         |  52 ++
 .../performance/dataprovider/StreamProvider.java   |  26 +
 .../performance/model/PerformanceTestSettings.java |  77 +++
 .../pipeline/PipelineDescriptionFetcher.java       |  21 +
 .../pipeline/PipelineDescriptionParser.java        |  21 +
 .../performance/pipeline/PipelineGenerator.java    | 116 ++++
 .../performance/producer/DataSimulator.java        |  73 +++
 .../simulation/DataReplayStatusNotifier.java       |  24 +
 .../performance/simulation/SimulationManager.java  |  68 ++
 .../simulation/SimulationStatusNotifier.java       |  24 +
 .../tests/serializer/JsonSerializerTest.java       |  70 +++
 .../performance/util/ParameterTool.java            |  36 ++
 .../streampipes/performance/PerformanceTest.java   |  26 -
 .../performance/PipelinePerformanceTest.java       |  59 --
 .../performance/dataprovider/DataProvider.java     |  26 -
 .../performance/dataprovider/JsonDataProvider.java | 109 ----
 .../dataprovider/SimpleSchemaProvider.java         |  52 --
 .../performance/dataprovider/StreamProvider.java   |  26 -
 .../performance/model/PerformanceTestSettings.java |  77 ---
 .../pipeline/PipelineDescriptionFetcher.java       |  21 -
 .../pipeline/PipelineDescriptionParser.java        |  21 -
 .../performance/pipeline/PipelineGenerator.java    | 116 ----
 .../performance/producer/DataSimulator.java        |  73 ---
 .../simulation/DataReplayStatusNotifier.java       |  24 -
 .../performance/simulation/SimulationManager.java  |  68 --
 .../simulation/SimulationStatusNotifier.java       |  24 -
 .../tests/serializer/JsonSerializerTest.java       |  70 ---
 .../performance/util/ParameterTool.java            |  36 --
 streampipes-pipeline-management/pom.xml            |  32 +-
 .../streampipes/manager/assets/AssetConstants.java |  26 +
 .../streampipes/manager/assets/AssetExtractor.java |  55 ++
 .../streampipes/manager/assets/AssetFetcher.java   |  46 ++
 .../streampipes/manager/assets/AssetManager.java   |  73 +++
 .../manager/assets/DocumentationParser.java        |  51 ++
 .../manager/assets/ImagePathReplacer.java          |  50 ++
 .../streampipes/manager/data/PipelineGraph.java    |  29 +
 .../manager/data/PipelineGraphBuilder.java         |  79 +++
 .../manager/data/PipelineGraphHelpers.java         |  45 ++
 .../manager/endpoint/EndpointFetcher.java          |  52 ++
 .../manager/endpoint/EndpointItemFetcher.java      |  65 ++
 .../manager/endpoint/EndpointItemParser.java       |  49 ++
 .../manager/endpoint/HttpJsonParser.java           |  54 ++
 .../manager/execution/http/GraphSubmitter.java     | 108 ++++
 .../manager/execution/http/HttpRequestBuilder.java |  84 +++
 .../manager/execution/http/PipelineExecutor.java   | 186 ++++++
 .../execution/http/PipelineStorageService.java     |  92 +++
 .../execution/status/PipelineStatusManager.java    |  58 ++
 .../execution/status/SepMonitoringManager.java     |  50 ++
 .../streampipes/manager/file/FileConstants.java    |  26 +
 .../streampipes/manager/file/FileHandler.java      |  54 ++
 .../streampipes/manager/file/FileManager.java      |  81 +++
 .../manager/generation/CodeGenerationManager.java  |  41 ++
 .../manager/info/SystemInfoProvider.java           |  55 ++
 .../manager/info/VersionInfoProvider.java          |  32 +
 .../manager/matching/DataSetGroundingSelector.java |  55 ++
 .../manager/matching/FormatSelector.java           |  68 ++
 .../manager/matching/GroundingBuilder.java         |  54 ++
 .../manager/matching/GroundingSelector.java        |  45 ++
 .../manager/matching/InvocationGraphBuilder.java   | 193 ++++++
 .../matching/PipelineVerificationHandler.java      | 239 +++++++
 .../manager/matching/ProtocolSelector.java         |  80 +++
 .../output/AppendOutputSchemaGenerator.java        |  82 +++
 .../output/CustomOutputSchemaGenerator.java        |  68 ++
 .../CustomTransformOutputSchemaGenerator.java      |  82 +++
 .../output/FixedOutputSchemaGenerator.java         |  53 ++
 .../matching/output/ListOutputSchemaGenerator.java |  68 ++
 .../matching/output/OutputSchemaFactory.java       |  60 ++
 .../matching/output/OutputSchemaGenerator.java     |  42 ++
 .../matching/output/PropertyDuplicateRemover.java  |  89 +++
 .../output/RenameOutputSchemaGenerator.java        |  62 ++
 .../output/TransformOutputSchemaGenerator.java     | 205 ++++++
 .../manager/matching/v2/AbstractMatcher.java       |  44 ++
 .../manager/matching/v2/DatatypeMatch.java         |  59 ++
 .../manager/matching/v2/DomainPropertyMatch.java   |  57 ++
 .../manager/matching/v2/ElementVerification.java   |  52 ++
 .../manager/matching/v2/FormatMatch.java           |  40 ++
 .../manager/matching/v2/GroundingMatch.java        |  67 ++
 .../manager/matching/v2/ListPropertyMatch.java     |  49 ++
 .../streampipes/manager/matching/v2/Matcher.java   |  28 +
 .../manager/matching/v2/MeasurementUnitMatch.java  |  40 ++
 .../manager/matching/v2/NestedPropertyMatch.java   |  40 ++
 .../matching/v2/PrimitivePropertyMatch.java        |  63 ++
 .../manager/matching/v2/PropertyMatch.java         |  97 +++
 .../manager/matching/v2/ProtocolMatch.java         |  44 ++
 .../manager/matching/v2/SchemaMatch.java           |  53 ++
 .../manager/matching/v2/StreamMatch.java           |  77 +++
 .../manager/matching/v2/StreamQualityMatch.java    |  45 ++
 .../v2/mapping/MappingPropertyCalculator.java      |  62 ++
 .../manager/matching/v2/utils/MatchingUtils.java   |  38 ++
 .../manager/monitoring/job/JobManager.java         |  64 ++
 .../manager/monitoring/job/MonitoringJob.java      |  81 +++
 .../monitoring/job/MonitoringJobExecutor.java      |  46 ++
 .../manager/monitoring/job/MonitoringUtils.java    |  39 ++
 .../manager/monitoring/job/SecMonitoringJob.java   |  36 ++
 .../manager/monitoring/job/SepaMonitoringJob.java  |  36 ++
 .../pipeline/PipelineExecutionStatusCollector.java |  24 +
 .../monitoring/runtime/EpRuntimeMonitoring.java    |  27 +
 .../manager/monitoring/runtime/EventGenerator.java |  72 +++
 .../monitoring/runtime/FormatGenerator.java        |  27 +
 .../monitoring/runtime/JsonFormatGenerator.java    |  23 +
 .../monitoring/runtime/PipelineObserver.java       |  92 +++
 .../monitoring/runtime/PipelineStreamReplacer.java | 109 ++++
 .../monitoring/runtime/ProtocolHandler.java        |  30 +
 .../monitoring/runtime/RandomDataGenerator.java    |  74 +++
 .../monitoring/runtime/RandomEventGenerator.java   |  56 ++
 .../monitoring/runtime/SchemaGenerator.java        |  46 ++
 .../monitoring/runtime/SepStoppedMonitoring.java   | 178 ++++++
 .../SepStoppedMonitoringPipelineBuilder.java       | 191 ++++++
 .../monitoring/runtime/SimilarStreamFinder.java    | 112 ++++
 .../runtime/StaticPropertyGenerator.java           |  24 +
 .../monitoring/runtime/StreamGenerator.java        |  23 +
 .../monitoring/runtime/ThriftFormatGenerator.java  |  23 +
 .../monitoring/task/CompareDescriptionTask.java    |  23 +
 .../monitoring/task/GetDescriptionTask.java        |  71 +++
 .../manager/monitoring/task/InvokeRuntimeTask.java |  23 +
 .../manager/monitoring/task/RemoveRuntimeTask.java |  23 +
 .../manager/monitoring/task/TaskDefinition.java    |  53 ++
 .../manager/monitoring/task/VerifySchemaTask.java  |  23 +
 .../streampipes/manager/operations/Operations.java | 186 ++++++
 .../manager/recommender/ElementRecommender.java    | 226 +++++++
 .../remote/ContainerProvidedOptionsHandler.java    |  82 +++
 .../runtime/PipelineElementRuntimeInfoFetcher.java | 247 ++++++++
 .../manager/runtime/SpDataFormatConverter.java     |  45 ++
 .../runtime/SpDataFormatConverterGenerator.java    |  74 +++
 .../manager/selector/PropertyFinder.java           |  55 ++
 .../selector/PropertyRequirementSelector.java      |  87 +++
 .../manager/selector/PropertySelector.java         | 153 +++++
 .../selector/PropertySelectorGenerator.java        |  85 +++
 .../manager/selector/PropertySelectorUtils.java    |  31 +
 .../setup/CacheInitializationInstallationStep.java |  45 ++
 .../manager/setup/CouchDbInstallationStep.java     | 148 +++++
 .../setup/EmpireInitializerInstallationStep.java   |  39 ++
 .../manager/setup/InstallationConfiguration.java   |  71 +++
 .../manager/setup/InstallationStep.java            |  30 +
 .../streampipes/manager/setup/Installer.java       |  52 ++
 .../setup/PipelineElementInstallationStep.java     |  64 ++
 .../setup/UserRegistrationInstallationStep.java    |  69 ++
 .../manager/storage/UserManagementService.java     |  51 ++
 .../streampipes/manager/storage/UserService.java   | 304 +++++++++
 .../manager/template/PipelineGenerator.java        | 144 +++++
 .../template/PipelineTemplateGenerator.java        | 158 +++++
 .../PipelineTemplateInvocationGenerator.java       |  84 +++
 .../PipelineTemplateInvocationHandler.java         | 101 +++
 .../instances/DashboardPipelineTemplate.java       |  45 ++
 .../instances/DataLakePipelineTemplate.java        |  45 ++
 .../instances/DelmeExamplePipelineTemplate.java    |  51 ++
 .../instances/ElasticsearchPipelineTemplate.java   |  45 ++
 .../FilterElasticSearchPipelineTemplate.java       |  46 ++
 .../template/instances/FilterPipelineTemplate.java |  46 ++
 .../template/instances/PipelineTemplate.java       |  30 +
 .../manager/topic/WildcardTopicGenerator.java      |  65 ++
 .../manager/util/PipelineVerificationUtils.java    |  56 ++
 .../manager/util/TemporaryGraphStorage.java        |  34 +
 .../streampipes/manager/util/TopicGenerator.java   |  28 +
 .../apache/streampipes/manager/util/TreeUtils.java |  67 ++
 .../manager/verification/ElementVerifier.java      | 171 +++++
 .../manager/verification/SecVerifier.java          |  89 +++
 .../manager/verification/SepVerifier.java          |  90 +++
 .../manager/verification/SepaVerifier.java         |  81 +++
 .../manager/verification/StorageState.java         |  23 +
 .../verification/extractor/StatementBuilder.java   |  52 ++
 .../verification/extractor/TypeExtractor.java      |  89 +++
 .../verification/messages/VerificationError.java   |  30 +
 .../verification/messages/VerificationResult.java  |  37 ++
 .../verification/messages/VerificationWarning.java |  29 +
 .../runtime/HeartbeatMessageGenerator.java         |  39 ++
 .../runtime/RuntimeVerificationResult.java         |  23 +
 .../verification/runtime/RuntimeVerifier.java      |  23 +
 .../verification/runtime/SourceSchemaVerifier.java |  41 ++
 .../verification/structure/AbstractVerifier.java   |  47 ++
 .../verification/structure/GeneralSecVerifier.java |  23 +
 .../verification/structure/GeneralSepVerifier.java |  23 +
 .../structure/GeneralSepaVerifier.java             |  23 +
 .../verification/structure/GeneralVerifier.java    |  44 ++
 .../structure/StreamRequirementVerifier.java       |  23 +
 .../verification/structure/StreamVerifier.java     |  42 ++
 .../manager/verification/structure/Verifier.java   |  28 +
 .../streampipes/manager/assets/AssetConstants.java |  26 -
 .../streampipes/manager/assets/AssetExtractor.java |  55 --
 .../streampipes/manager/assets/AssetFetcher.java   |  46 --
 .../streampipes/manager/assets/AssetManager.java   |  73 ---
 .../manager/assets/DocumentationParser.java        |  51 --
 .../manager/assets/ImagePathReplacer.java          |  50 --
 .../streampipes/manager/data/PipelineGraph.java    |  29 -
 .../manager/data/PipelineGraphBuilder.java         |  79 ---
 .../manager/data/PipelineGraphHelpers.java         |  45 --
 .../manager/endpoint/EndpointFetcher.java          |  52 --
 .../manager/endpoint/EndpointItemFetcher.java      |  65 --
 .../manager/endpoint/EndpointItemParser.java       |  49 --
 .../manager/endpoint/HttpJsonParser.java           |  54 --
 .../manager/execution/http/GraphSubmitter.java     | 108 ----
 .../manager/execution/http/HttpRequestBuilder.java |  84 ---
 .../manager/execution/http/PipelineExecutor.java   | 186 ------
 .../execution/http/PipelineStorageService.java     |  92 ---
 .../execution/status/PipelineStatusManager.java    |  58 --
 .../execution/status/SepMonitoringManager.java     |  50 --
 .../streampipes/manager/file/FileConstants.java    |  26 -
 .../org/streampipes/manager/file/FileHandler.java  |  54 --
 .../org/streampipes/manager/file/FileManager.java  |  81 ---
 .../manager/generation/CodeGenerationManager.java  |  41 --
 .../manager/info/SystemInfoProvider.java           |  55 --
 .../manager/info/VersionInfoProvider.java          |  32 -
 .../manager/matching/DataSetGroundingSelector.java |  55 --
 .../manager/matching/FormatSelector.java           |  68 --
 .../manager/matching/GroundingBuilder.java         |  54 --
 .../manager/matching/GroundingSelector.java        |  45 --
 .../manager/matching/InvocationGraphBuilder.java   | 193 ------
 .../matching/PipelineVerificationHandler.java      | 239 -------
 .../manager/matching/ProtocolSelector.java         |  80 ---
 .../output/AppendOutputSchemaGenerator.java        |  82 ---
 .../output/CustomOutputSchemaGenerator.java        |  68 --
 .../CustomTransformOutputSchemaGenerator.java      |  82 ---
 .../output/FixedOutputSchemaGenerator.java         |  53 --
 .../matching/output/ListOutputSchemaGenerator.java |  68 --
 .../matching/output/OutputSchemaFactory.java       |  60 --
 .../matching/output/OutputSchemaGenerator.java     |  42 --
 .../matching/output/PropertyDuplicateRemover.java  |  89 ---
 .../output/RenameOutputSchemaGenerator.java        |  62 --
 .../output/TransformOutputSchemaGenerator.java     | 205 ------
 .../manager/matching/v2/AbstractMatcher.java       |  44 --
 .../manager/matching/v2/DatatypeMatch.java         |  59 --
 .../manager/matching/v2/DomainPropertyMatch.java   |  57 --
 .../manager/matching/v2/ElementVerification.java   |  52 --
 .../manager/matching/v2/FormatMatch.java           |  40 --
 .../manager/matching/v2/GroundingMatch.java        |  67 --
 .../manager/matching/v2/ListPropertyMatch.java     |  49 --
 .../streampipes/manager/matching/v2/Matcher.java   |  28 -
 .../manager/matching/v2/MeasurementUnitMatch.java  |  40 --
 .../manager/matching/v2/NestedPropertyMatch.java   |  40 --
 .../matching/v2/PrimitivePropertyMatch.java        |  63 --
 .../manager/matching/v2/PropertyMatch.java         |  97 ---
 .../manager/matching/v2/ProtocolMatch.java         |  44 --
 .../manager/matching/v2/SchemaMatch.java           |  53 --
 .../manager/matching/v2/StreamMatch.java           |  77 ---
 .../manager/matching/v2/StreamQualityMatch.java    |  45 --
 .../v2/mapping/MappingPropertyCalculator.java      |  62 --
 .../manager/matching/v2/utils/MatchingUtils.java   |  38 --
 .../manager/monitoring/job/JobManager.java         |  64 --
 .../manager/monitoring/job/MonitoringJob.java      |  81 ---
 .../monitoring/job/MonitoringJobExecutor.java      |  46 --
 .../manager/monitoring/job/MonitoringUtils.java    |  39 --
 .../manager/monitoring/job/SecMonitoringJob.java   |  36 --
 .../manager/monitoring/job/SepaMonitoringJob.java  |  36 --
 .../pipeline/PipelineExecutionStatusCollector.java |  24 -
 .../monitoring/runtime/EpRuntimeMonitoring.java    |  27 -
 .../manager/monitoring/runtime/EventGenerator.java |  72 ---
 .../monitoring/runtime/FormatGenerator.java        |  27 -
 .../monitoring/runtime/JsonFormatGenerator.java    |  23 -
 .../monitoring/runtime/PipelineObserver.java       |  92 ---
 .../monitoring/runtime/PipelineStreamReplacer.java | 109 ----
 .../monitoring/runtime/ProtocolHandler.java        |  30 -
 .../monitoring/runtime/RandomDataGenerator.java    |  74 ---
 .../monitoring/runtime/RandomEventGenerator.java   |  56 --
 .../monitoring/runtime/SchemaGenerator.java        |  46 --
 .../monitoring/runtime/SepStoppedMonitoring.java   | 178 ------
 .../SepStoppedMonitoringPipelineBuilder.java       | 191 ------
 .../monitoring/runtime/SimilarStreamFinder.java    | 112 ----
 .../runtime/StaticPropertyGenerator.java           |  24 -
 .../monitoring/runtime/StreamGenerator.java        |  23 -
 .../monitoring/runtime/ThriftFormatGenerator.java  |  23 -
 .../monitoring/task/CompareDescriptionTask.java    |  23 -
 .../monitoring/task/GetDescriptionTask.java        |  71 ---
 .../manager/monitoring/task/InvokeRuntimeTask.java |  23 -
 .../manager/monitoring/task/RemoveRuntimeTask.java |  23 -
 .../manager/monitoring/task/TaskDefinition.java    |  53 --
 .../manager/monitoring/task/VerifySchemaTask.java  |  23 -
 .../streampipes/manager/operations/Operations.java | 186 ------
 .../manager/recommender/ElementRecommender.java    | 226 -------
 .../remote/ContainerProvidedOptionsHandler.java    |  82 ---
 .../runtime/PipelineElementRuntimeInfoFetcher.java | 247 --------
 .../manager/runtime/SpDataFormatConverter.java     |  45 --
 .../runtime/SpDataFormatConverterGenerator.java    |  74 ---
 .../manager/selector/PropertyFinder.java           |  55 --
 .../selector/PropertyRequirementSelector.java      |  87 ---
 .../manager/selector/PropertySelector.java         | 153 -----
 .../selector/PropertySelectorGenerator.java        |  85 ---
 .../manager/selector/PropertySelectorUtils.java    |  31 -
 .../setup/CacheInitializationInstallationStep.java |  45 --
 .../manager/setup/CouchDbInstallationStep.java     | 148 -----
 .../setup/EmpireInitializerInstallationStep.java   |  39 --
 .../manager/setup/InstallationConfiguration.java   |  71 ---
 .../manager/setup/InstallationStep.java            |  30 -
 .../org/streampipes/manager/setup/Installer.java   |  52 --
 .../setup/PipelineElementInstallationStep.java     |  64 --
 .../setup/UserRegistrationInstallationStep.java    |  69 --
 .../manager/storage/UserManagementService.java     |  51 --
 .../streampipes/manager/storage/UserService.java   | 304 ---------
 .../manager/template/PipelineGenerator.java        | 144 -----
 .../template/PipelineTemplateGenerator.java        | 158 -----
 .../PipelineTemplateInvocationGenerator.java       |  84 ---
 .../PipelineTemplateInvocationHandler.java         | 101 ---
 .../instances/DashboardPipelineTemplate.java       |  45 --
 .../instances/DataLakePipelineTemplate.java        |  45 --
 .../instances/DelmeExamplePipelineTemplate.java    |  51 --
 .../instances/ElasticsearchPipelineTemplate.java   |  45 --
 .../FilterElasticSearchPipelineTemplate.java       |  46 --
 .../template/instances/FilterPipelineTemplate.java |  46 --
 .../template/instances/PipelineTemplate.java       |  30 -
 .../manager/topic/WildcardTopicGenerator.java      |  65 --
 .../manager/util/PipelineVerificationUtils.java    |  56 --
 .../manager/util/TemporaryGraphStorage.java        |  34 -
 .../streampipes/manager/util/TopicGenerator.java   |  28 -
 .../org/streampipes/manager/util/TreeUtils.java    |  67 --
 .../manager/verification/ElementVerifier.java      | 171 -----
 .../manager/verification/SecVerifier.java          |  89 ---
 .../manager/verification/SepVerifier.java          |  90 ---
 .../manager/verification/SepaVerifier.java         |  81 ---
 .../manager/verification/StorageState.java         |  23 -
 .../verification/extractor/StatementBuilder.java   |  52 --
 .../verification/extractor/TypeExtractor.java      |  89 ---
 .../verification/messages/VerificationError.java   |  30 -
 .../verification/messages/VerificationResult.java  |  37 --
 .../verification/messages/VerificationWarning.java |  29 -
 .../runtime/HeartbeatMessageGenerator.java         |  39 --
 .../runtime/RuntimeVerificationResult.java         |  23 -
 .../verification/runtime/RuntimeVerifier.java      |  23 -
 .../verification/runtime/SourceSchemaVerifier.java |  41 --
 .../verification/structure/AbstractVerifier.java   |  47 --
 .../verification/structure/GeneralSecVerifier.java |  23 -
 .../verification/structure/GeneralSepVerifier.java |  23 -
 .../structure/GeneralSepaVerifier.java             |  23 -
 .../verification/structure/GeneralVerifier.java    |  44 --
 .../structure/StreamRequirementVerifier.java       |  23 -
 .../verification/structure/StreamVerifier.java     |  42 --
 .../manager/verification/structure/Verifier.java   |  28 -
 .../streampipes/manager/ThrowableCaptor.java       |  42 ++
 .../manager/assets/TestImagePathReplacer.java      |  52 ++
 .../manager/matching/TestPipelineModification.java |  66 ++
 .../matching/TestPipelineValidationHandler.java    |  64 ++
 .../streampipes/manager/matching/TestRdfId.java    |  47 ++
 .../manager/matching/v2/ListPropertyMatchTest.java |  64 ++
 .../manager/matching/v2/TestDatatypeMatch.java     |  72 +++
 .../matching/v2/TestDomainPropertyMatch.java       |  62 ++
 .../matching/v2/TestElementVerification.java       |  41 ++
 .../manager/matching/v2/TestFormatMatch.java       |  56 ++
 .../manager/matching/v2/TestGroundingMatch.java    | 119 ++++
 .../matching/v2/TestMeasurementUnitMatch.java      |  41 ++
 .../matching/v2/TestPrimitivePropertyMatch.java    |  70 +++
 .../manager/matching/v2/TestProtocolMatch.java     |  56 ++
 .../manager/matching/v2/TestSchemaMatch.java       | 123 ++++
 .../streampipes/manager/matching/v2/TestUtils.java | 103 +++
 .../streampipes/manager/pipeline/StopPipeline.java |  33 +
 .../manager/pipeline/TestPipelineExecution.java    |  33 +
 .../manager/pipeline/TestPipelineStorage.java      |  42 ++
 .../manager/pipeline/TestSerializer.java           |  48 ++
 .../manager/selector/TestPropertyRenaming.java     |  46 ++
 .../streampipes/manager/selector/TestSelector.java |  58 ++
 .../manager/selector/TestSelectorGenerator.java    |  47 ++
 .../manager/selector/TestSelectorUtils.java        |  68 ++
 .../manager/template/TestTemplateGenerator.java    |  28 +
 .../org/streampipes/manager/ThrowableCaptor.java   |  42 --
 .../manager/assets/TestImagePathReplacer.java      |  52 --
 .../manager/matching/TestPipelineModification.java |  66 --
 .../matching/TestPipelineValidationHandler.java    |  64 --
 .../streampipes/manager/matching/TestRdfId.java    |  47 --
 .../manager/matching/v2/ListPropertyMatchTest.java |  64 --
 .../manager/matching/v2/TestDatatypeMatch.java     |  72 ---
 .../matching/v2/TestDomainPropertyMatch.java       |  62 --
 .../matching/v2/TestElementVerification.java       |  41 --
 .../manager/matching/v2/TestFormatMatch.java       |  56 --
 .../manager/matching/v2/TestGroundingMatch.java    | 119 ----
 .../matching/v2/TestMeasurementUnitMatch.java      |  41 --
 .../matching/v2/TestPrimitivePropertyMatch.java    |  70 ---
 .../manager/matching/v2/TestProtocolMatch.java     |  56 --
 .../manager/matching/v2/TestSchemaMatch.java       | 123 ----
 .../streampipes/manager/matching/v2/TestUtils.java | 103 ---
 .../streampipes/manager/pipeline/StopPipeline.java |  33 -
 .../manager/pipeline/TestPipelineExecution.java    |  33 -
 .../manager/pipeline/TestPipelineStorage.java      |  42 --
 .../manager/pipeline/TestSerializer.java           |  48 --
 .../manager/selector/TestPropertyRenaming.java     |  46 --
 .../streampipes/manager/selector/TestSelector.java |  58 --
 .../manager/selector/TestSelectorGenerator.java    |  47 --
 .../manager/selector/TestSelectorUtils.java        |  68 --
 .../manager/template/TestTemplateGenerator.java    |  28 -
 streampipes-rest-shared/pom.xml                    |   6 +-
 .../rest/shared/annotation/GsonClientModel.java    |  31 +
 .../rest/shared/annotation/GsonWithIds.java        |  31 +
 .../rest/shared/annotation/GsonWithoutIds.java     |  31 +
 .../rest/shared/annotation/JsonLdSerialized.java   |  30 +
 .../annotation/NoAuthenticationRequired.java       |  28 +
 .../rest/shared/annotation/RdfRootElement.java     |  32 +
 .../shared/serializer/GsonClientModelProvider.java |  40 ++
 .../rest/shared/serializer/GsonJerseyProvider.java | 108 ++++
 .../rest/shared/serializer/GsonWithIdProvider.java |  42 ++
 .../shared/serializer/GsonWithoutIdProvider.java   |  42 ++
 .../rest/shared/serializer/JsonLdProvider.java     |  78 +++
 .../streampipes/rest/shared/util/JsonLdUtils.java  |  67 ++
 .../streampipes/rest/shared/util/SpMediaType.java  |  23 +
 .../rest/shared/annotation/GsonClientModel.java    |  31 -
 .../rest/shared/annotation/GsonWithIds.java        |  31 -
 .../rest/shared/annotation/GsonWithoutIds.java     |  31 -
 .../rest/shared/annotation/JsonLdSerialized.java   |  30 -
 .../annotation/NoAuthenticationRequired.java       |  28 -
 .../rest/shared/annotation/RdfRootElement.java     |  32 -
 .../shared/serializer/GsonClientModelProvider.java |  40 --
 .../rest/shared/serializer/GsonJerseyProvider.java | 108 ----
 .../rest/shared/serializer/GsonWithIdProvider.java |  42 --
 .../shared/serializer/GsonWithoutIdProvider.java   |  42 --
 .../rest/shared/serializer/JsonLdProvider.java     |  79 ---
 .../streampipes/rest/shared/util/JsonLdUtils.java  |  67 --
 .../streampipes/rest/shared/util/SpMediaType.java  |  23 -
 .../rest/shared/util/JsonLdUtilsTest.java          |  86 +++
 .../rest/shared/util/JsonLdUtilsTest.java          |  86 ---
 streampipes-rest/pom.xml                           |  18 +-
 .../streampipes/rest/api/IApplicationLink.java     |  27 +
 .../streampipes/rest/api/IAssetDashboard.java      |  41 ++
 .../streampipes/rest/api/IAuthentication.java      |  37 ++
 .../apache/streampipes/rest/api/IConsulConfig.java |  37 ++
 .../org/apache/streampipes/rest/api/ICouchdb.java  |  27 +
 .../org/apache/streampipes/rest/api/ILogs.java     |  29 +
 .../apache/streampipes/rest/api/INotification.java |  32 +
 .../streampipes/rest/api/IOntologyContext.java     |  34 +
 .../streampipes/rest/api/IOntologyKnowledge.java   |  70 +++
 .../rest/api/IOntologyMeasurementUnit.java         |  30 +
 .../rest/api/IOntologyPipelineElement.java         |  37 ++
 .../org/apache/streampipes/rest/api/IPipeline.java |  43 ++
 .../streampipes/rest/api/IPipelineElement.java     |  40 ++
 .../rest/api/IPipelineElementAsset.java            |  29 +
 .../rest/api/IPipelineElementCategory.java         |  33 +
 .../streampipes/rest/api/IPipelineElementFile.java |  32 +
 .../rest/api/IPipelineElementRuntimeInfo.java      |  27 +
 .../streampipes/rest/api/IPipelineTemplate.java    |  33 +
 .../apache/streampipes/rest/api/IRdfEndpoint.java  |  34 +
 .../org/apache/streampipes/rest/api/ISetup.java    |  34 +
 .../org/apache/streampipes/rest/api/IUser.java     |  30 +
 .../org/apache/streampipes/rest/api/IVersion.java  |  27 +
 .../streampipes/rest/api/IVirtualSensor.java       |  29 +
 .../streampipes/rest/api/IVisualization.java       |  26 +
 .../rest/api/InternalPipelineTemplate.java         |  29 +
 .../streampipes/rest/api/connect/SpConnect.java    |  22 +
 .../rest/authentication/StreamPipesFilter.java     |  55 ++
 .../streampipes/rest/filter/LoggingFilter.java     |  35 ++
 .../rest/impl/AbstractRestInterface.java           | 196 ++++++
 .../streampipes/rest/impl/ApplicationLink.java     |  79 +++
 .../streampipes/rest/impl/AssetDashboard.java      | 127 ++++
 .../streampipes/rest/impl/Authentication.java      | 133 ++++
 .../apache/streampipes/rest/impl/AutoComplete.java |  75 +++
 .../apache/streampipes/rest/impl/ConsulConfig.java | 189 ++++++
 .../rest/impl/ContainerProvidedOptions.java        |  41 ++
 .../org/apache/streampipes/rest/impl/Couchdb.java  |  55 ++
 .../apache/streampipes/rest/impl/DataStream.java   |  40 ++
 .../apache/streampipes/rest/impl/Deployment.java   | 186 ++++++
 .../rest/impl/InternalPipelineTemplates.java       | 142 +++++
 .../apache/streampipes/rest/impl/Notification.java |  83 +++
 .../streampipes/rest/impl/OntologyContext.java     |  86 +++
 .../streampipes/rest/impl/OntologyKnowledge.java   | 299 +++++++++
 .../rest/impl/OntologyMeasurementUnit.java         |  64 ++
 .../rest/impl/OntologyPipelineElement.java         | 159 +++++
 .../streampipes/rest/impl/PipelineCategory.java    |  65 ++
 .../rest/impl/PipelineElementAsset.java            |  75 +++
 .../rest/impl/PipelineElementCategory.java         |  78 +++
 .../streampipes/rest/impl/PipelineElementFile.java |  62 ++
 .../rest/impl/PipelineElementImport.java           | 170 +++++
 .../rest/impl/PipelineElementRuntimeInfo.java      |  47 ++
 .../streampipes/rest/impl/PipelineTemplate.java    | 169 +++++
 .../rest/impl/PipelineWithUserResource.java        | 257 ++++++++
 .../apache/streampipes/rest/impl/RdfEndpoint.java  | 105 ++++
 .../rest/impl/SemanticEventConsumer.java           | 151 +++++
 .../rest/impl/SemanticEventProcessingAgent.java    | 150 +++++
 .../rest/impl/SemanticEventProducer.java           | 169 +++++
 .../org/apache/streampipes/rest/impl/Setup.java    | 103 +++
 .../streampipes/rest/impl/StreamPipesLogs.java     | 147 +++++
 .../org/apache/streampipes/rest/impl/User.java     |  68 ++
 .../org/apache/streampipes/rest/impl/Version.java  |  49 ++
 .../streampipes/rest/impl/VirtualSensor.java       |  50 ++
 .../streampipes/rest/impl/Visualization.java       |  38 ++
 .../rest/impl/datalake/DataLakeManagementV3.java   | 524 ++++++++++++++++
 .../impl/datalake/DataLakeNoUserManagementV3.java  |  84 +++
 .../impl/datalake/DataLakeNoUserResourceV3.java    |  54 ++
 .../rest/impl/datalake/DataLakeResourceV3.java     | 211 +++++++
 .../rest/impl/datalake/model/DataResult.java       |  52 ++
 .../impl/datalake/model/GroupedDataResult.java     |  53 ++
 .../rest/impl/datalake/model/InfoResult.java       |  51 ++
 .../rest/impl/datalake/model/PageResult.java       |  51 ++
 .../rest/impl/nouser/FileServingResource.java      |  39 ++
 .../impl/nouser/PipelineElementImportNoUser.java   |  96 +++
 .../rest/impl/nouser/PipelineNoUserResource.java   |  50 ++
 .../interceptor/AuthenticationInterceptor.java     |  36 ++
 .../rest/management/PipelineManagement.java        |  44 ++
 .../AbstractNotificationSubscriber.java            |  76 +++
 .../rest/notifications/NotificationListener.java   |  45 ++
 .../StreamPipesNotificationSubscriber.java         |  35 ++
 .../org/streampipes/rest/api/IApplicationLink.java |  27 -
 .../org/streampipes/rest/api/IAssetDashboard.java  |  41 --
 .../org/streampipes/rest/api/IAuthentication.java  |  37 --
 .../org/streampipes/rest/api/IConsulConfig.java    |  37 --
 .../java/org/streampipes/rest/api/ICouchdb.java    |  27 -
 .../main/java/org/streampipes/rest/api/ILogs.java  |  29 -
 .../org/streampipes/rest/api/INotification.java    |  32 -
 .../org/streampipes/rest/api/IOntologyContext.java |  34 -
 .../streampipes/rest/api/IOntologyKnowledge.java   |  70 ---
 .../rest/api/IOntologyMeasurementUnit.java         |  30 -
 .../rest/api/IOntologyPipelineElement.java         |  37 --
 .../java/org/streampipes/rest/api/IPipeline.java   |  43 --
 .../org/streampipes/rest/api/IPipelineElement.java |  40 --
 .../rest/api/IPipelineElementAsset.java            |  29 -
 .../rest/api/IPipelineElementCategory.java         |  33 -
 .../streampipes/rest/api/IPipelineElementFile.java |  32 -
 .../rest/api/IPipelineElementRuntimeInfo.java      |  27 -
 .../streampipes/rest/api/IPipelineTemplate.java    |  33 -
 .../org/streampipes/rest/api/IRdfEndpoint.java     |  34 -
 .../main/java/org/streampipes/rest/api/ISetup.java |  34 -
 .../main/java/org/streampipes/rest/api/IUser.java  |  30 -
 .../java/org/streampipes/rest/api/IVersion.java    |  27 -
 .../org/streampipes/rest/api/IVirtualSensor.java   |  29 -
 .../org/streampipes/rest/api/IVisualization.java   |  26 -
 .../rest/api/InternalPipelineTemplate.java         |  29 -
 .../streampipes/rest/api/connect/SpConnect.java    |  22 -
 .../rest/authentication/StreamPipesFilter.java     |  55 --
 .../org/streampipes/rest/filter/LoggingFilter.java |  35 --
 .../rest/impl/AbstractRestInterface.java           | 196 ------
 .../org/streampipes/rest/impl/ApplicationLink.java |  79 ---
 .../org/streampipes/rest/impl/AssetDashboard.java  | 127 ----
 .../org/streampipes/rest/impl/Authentication.java  | 133 ----
 .../org/streampipes/rest/impl/AutoComplete.java    |  75 ---
 .../org/streampipes/rest/impl/ConsulConfig.java    | 189 ------
 .../rest/impl/ContainerProvidedOptions.java        |  41 --
 .../java/org/streampipes/rest/impl/Couchdb.java    |  55 --
 .../java/org/streampipes/rest/impl/DataStream.java |  40 --
 .../java/org/streampipes/rest/impl/Deployment.java | 186 ------
 .../rest/impl/InternalPipelineTemplates.java       | 142 -----
 .../org/streampipes/rest/impl/Notification.java    |  83 ---
 .../org/streampipes/rest/impl/OntologyContext.java |  86 ---
 .../streampipes/rest/impl/OntologyKnowledge.java   | 299 ---------
 .../rest/impl/OntologyMeasurementUnit.java         |  64 --
 .../rest/impl/OntologyPipelineElement.java         | 159 -----
 .../streampipes/rest/impl/PipelineCategory.java    |  65 --
 .../rest/impl/PipelineElementAsset.java            |  75 ---
 .../rest/impl/PipelineElementCategory.java         |  78 ---
 .../streampipes/rest/impl/PipelineElementFile.java |  62 --
 .../rest/impl/PipelineElementImport.java           | 170 -----
 .../rest/impl/PipelineElementRuntimeInfo.java      |  47 --
 .../streampipes/rest/impl/PipelineTemplate.java    | 169 -----
 .../rest/impl/PipelineWithUserResource.java        | 257 --------
 .../org/streampipes/rest/impl/RdfEndpoint.java     | 105 ----
 .../rest/impl/SemanticEventConsumer.java           | 151 -----
 .../rest/impl/SemanticEventProcessingAgent.java    | 150 -----
 .../rest/impl/SemanticEventProducer.java           | 169 -----
 .../main/java/org/streampipes/rest/impl/Setup.java | 103 ---
 .../org/streampipes/rest/impl/StreamPipesLogs.java | 147 -----
 .../main/java/org/streampipes/rest/impl/User.java  |  68 --
 .../java/org/streampipes/rest/impl/Version.java    |  49 --
 .../org/streampipes/rest/impl/VirtualSensor.java   |  50 --
 .../org/streampipes/rest/impl/Visualization.java   |  38 --
 .../rest/impl/datalake/DataLakeManagementV3.java   | 524 ----------------
 .../impl/datalake/DataLakeNoUserManagementV3.java  |  84 ---
 .../impl/datalake/DataLakeNoUserResourceV3.java    |  54 --
 .../rest/impl/datalake/DataLakeResourceV3.java     | 211 -------
 .../rest/impl/datalake/model/DataResult.java       |  52 --
 .../impl/datalake/model/GroupedDataResult.java     |  53 --
 .../rest/impl/datalake/model/InfoResult.java       |  51 --
 .../rest/impl/datalake/model/PageResult.java       |  51 --
 .../rest/impl/nouser/FileServingResource.java      |  39 --
 .../impl/nouser/PipelineElementImportNoUser.java   |  96 ---
 .../rest/impl/nouser/PipelineNoUserResource.java   |  50 --
 .../interceptor/AuthenticationInterceptor.java     |  36 --
 .../rest/management/PipelineManagement.java        |  44 --
 .../AbstractNotificationSubscriber.java            |  76 ---
 .../rest/notifications/NotificationListener.java   |  45 --
 .../StreamPipesNotificationSubscriber.java         |  35 --
 .../java/org/apache/streampipes/rest/Mock.java     |  26 +
 .../java/org/apache/streampipes/rest/TestUtil.java |  82 +++
 .../streampipes/rest/impl/ConsulConfigTest.java    |  77 +++
 .../datalake/DataLakeNoUserManagementV3Test.java   | 210 +++++++
 .../apache/streampipes/rest/v2/DeploymentTest.java |  63 ++
 .../src/test/java/org/streampipes/rest/Mock.java   |  26 -
 .../test/java/org/streampipes/rest/TestUtil.java   |  82 ---
 .../streampipes/rest/impl/ConsulConfigTest.java    |  77 ---
 .../datalake/DataLakeNoUserManagementV3Test.java   | 210 -------
 .../org/streampipes/rest/v2/DeploymentTest.java    |  63 --
 streampipes-sdk/pom.xml                            |   8 +-
 .../apache/streampipes/sdk/StaticProperties.java   | 117 ++++
 ...AbstractConfigurablePipelineElementBuilder.java | 694 +++++++++++++++++++++
 .../builder/AbstractPipelineElementBuilder.java    |  91 +++
 .../builder/AbstractProcessingElementBuilder.java  | 286 +++++++++
 .../sdk/builder/BoundPipelineElementBuilder.java   | 106 ++++
 .../streampipes/sdk/builder/DataSetBuilder.java    |  78 +++
 .../streampipes/sdk/builder/DataSinkBuilder.java   |  74 +++
 .../streampipes/sdk/builder/DataSourceBuilder.java |  48 ++
 .../streampipes/sdk/builder/DataStreamBuilder.java | 130 ++++
 .../sdk/builder/PipelineTemplateBuilder.java       |  60 ++
 .../sdk/builder/PrimitivePropertyBuilder.java      | 156 +++++
 .../sdk/builder/ProcessingElementBuilder.java      | 111 ++++
 .../sdk/builder/PropertyRequirementsBuilder.java   |  82 +++
 .../sdk/builder/StreamRequirementsBuilder.java     | 126 ++++
 .../sdk/builder/WildcardTopicBuilder.java          |  73 +++
 .../builder/adapter/AdapterDescriptionBuilder.java |  45 ++
 .../builder/adapter/FormatDescriptionBuilder.java  |  51 ++
 .../adapter/GenericDataSetAdapterBuilder.java      |  21 +
 .../adapter/GenericDataStreamAdapterBuilder.java   |  21 +
 .../sdk/builder/adapter/GuessSchemaBuilder.java    |  72 +++
 .../adapter/ProtocolDescriptionBuilder.java        |  68 ++
 .../adapter/SpecificDataSetAdapterBuilder.java     |  52 ++
 .../adapter/SpecificDataStreamAdapterBuilder.java  |  51 ++
 .../sdk/extractor/AbstractParameterExtractor.java  | 456 ++++++++++++++
 .../sdk/extractor/DataSinkParameterExtractor.java  |  32 +
 .../ProcessingElementParameterExtractor.java       |  58 ++
 .../sdk/extractor/StaticPropertyExtractor.java     |  52 ++
 .../streampipes/sdk/helpers/AdapterSourceType.java |  33 +
 .../streampipes/sdk/helpers/Alternatives.java      |  37 ++
 .../sdk/helpers/CollectedStreamRequirements.java   |  61 ++
 .../streampipes/sdk/helpers/EpProperties.java      | 338 ++++++++++
 .../streampipes/sdk/helpers/EpRequirements.java    | 131 ++++
 .../apache/streampipes/sdk/helpers/Formats.java    |  65 ++
 .../apache/streampipes/sdk/helpers/Groundings.java |  43 ++
 .../org/apache/streampipes/sdk/helpers/Label.java  |  56 ++
 .../org/apache/streampipes/sdk/helpers/Labels.java | 114 ++++
 .../apache/streampipes/sdk/helpers/Locales.java    |  36 ++
 .../sdk/helpers/OntologyProperties.java            |  36 ++
 .../apache/streampipes/sdk/helpers/Options.java    |  42 ++
 .../streampipes/sdk/helpers/OutputStrategies.java  | 111 ++++
 .../apache/streampipes/sdk/helpers/Protocols.java  |  66 ++
 .../streampipes/sdk/helpers/StreamIdentifier.java  |  38 ++
 .../streampipes/sdk/helpers/SupportedFormats.java  |  69 ++
 .../sdk/helpers/SupportedProtocols.java            |  44 ++
 .../sdk/helpers/TransformOperations.java           |  96 +++
 .../org/apache/streampipes/sdk/helpers/Tuple2.java |  46 ++
 .../org/apache/streampipes/sdk/helpers/Tuple3.java |  47 ++
 .../sdk/helpers/ValueSpecifications.java           |  53 ++
 .../streampipes/sdk/stream/SchemaBuilder.java      |  68 ++
 .../streampipes/sdk/stream/StreamBuilder.java      |  89 +++
 .../org/apache/streampipes/sdk/utils/Assets.java   |  24 +
 .../apache/streampipes/sdk/utils/Datatypes.java    |  46 ++
 .../java/org/streampipes/sdk/StaticProperties.java | 117 ----
 ...AbstractConfigurablePipelineElementBuilder.java | 694 ---------------------
 .../builder/AbstractPipelineElementBuilder.java    |  91 ---
 .../builder/AbstractProcessingElementBuilder.java  | 286 ---------
 .../sdk/builder/BoundPipelineElementBuilder.java   | 106 ----
 .../streampipes/sdk/builder/DataSetBuilder.java    |  78 ---
 .../streampipes/sdk/builder/DataSinkBuilder.java   |  74 ---
 .../streampipes/sdk/builder/DataSourceBuilder.java |  48 --
 .../streampipes/sdk/builder/DataStreamBuilder.java | 130 ----
 .../sdk/builder/PipelineTemplateBuilder.java       |  60 --
 .../sdk/builder/PrimitivePropertyBuilder.java      | 156 -----
 .../sdk/builder/ProcessingElementBuilder.java      | 111 ----
 .../sdk/builder/PropertyRequirementsBuilder.java   |  82 ---
 .../sdk/builder/StreamRequirementsBuilder.java     | 126 ----
 .../sdk/builder/WildcardTopicBuilder.java          |  73 ---
 .../builder/adapter/AdapterDescriptionBuilder.java |  45 --
 .../builder/adapter/FormatDescriptionBuilder.java  |  51 --
 .../adapter/GenericDataSetAdapterBuilder.java      |  21 -
 .../adapter/GenericDataStreamAdapterBuilder.java   |  21 -
 .../sdk/builder/adapter/GuessSchemaBuilder.java    |  72 ---
 .../adapter/ProtocolDescriptionBuilder.java        |  68 --
 .../adapter/SpecificDataSetAdapterBuilder.java     |  52 --
 .../adapter/SpecificDataStreamAdapterBuilder.java  |  51 --
 .../sdk/extractor/AbstractParameterExtractor.java  | 456 --------------
 .../sdk/extractor/DataSinkParameterExtractor.java  |  32 -
 .../ProcessingElementParameterExtractor.java       |  58 --
 .../sdk/extractor/StaticPropertyExtractor.java     |  52 --
 .../streampipes/sdk/helpers/AdapterSourceType.java |  33 -
 .../org/streampipes/sdk/helpers/Alternatives.java  |  37 --
 .../sdk/helpers/CollectedStreamRequirements.java   |  61 --
 .../org/streampipes/sdk/helpers/EpProperties.java  | 338 ----------
 .../streampipes/sdk/helpers/EpRequirements.java    | 131 ----
 .../java/org/streampipes/sdk/helpers/Formats.java  |  65 --
 .../org/streampipes/sdk/helpers/Groundings.java    |  43 --
 .../java/org/streampipes/sdk/helpers/Label.java    |  56 --
 .../java/org/streampipes/sdk/helpers/Labels.java   | 114 ----
 .../java/org/streampipes/sdk/helpers/Locales.java  |  36 --
 .../sdk/helpers/OntologyProperties.java            |  36 --
 .../java/org/streampipes/sdk/helpers/Options.java  |  42 --
 .../streampipes/sdk/helpers/OutputStrategies.java  | 111 ----
 .../org/streampipes/sdk/helpers/Protocols.java     |  66 --
 .../streampipes/sdk/helpers/StreamIdentifier.java  |  38 --
 .../streampipes/sdk/helpers/SupportedFormats.java  |  69 --
 .../sdk/helpers/SupportedProtocols.java            |  44 --
 .../sdk/helpers/TransformOperations.java           |  96 ---
 .../java/org/streampipes/sdk/helpers/Tuple2.java   |  46 --
 .../java/org/streampipes/sdk/helpers/Tuple3.java   |  47 --
 .../sdk/helpers/ValueSpecifications.java           |  53 --
 .../org/streampipes/sdk/stream/SchemaBuilder.java  |  68 --
 .../org/streampipes/sdk/stream/StreamBuilder.java  |  89 ---
 .../java/org/streampipes/sdk/utils/Assets.java     |  24 -
 .../java/org/streampipes/sdk/utils/Datatypes.java  |  46 --
 .../sdk/builder/TestProcessingElementBuilder.java  |  46 ++
 .../sdk/builder/TestSpDataStreamBuilder.java       |  45 ++
 .../sdk/builder/TestProcessingElementBuilder.java  |  46 --
 .../sdk/builder/TestSpDataStreamBuilder.java       |  45 --
 streampipes-serializers/pom.xml                    |   6 +-
 .../serializers/json/AdapterSerializer.java        |  59 ++
 .../serializers/json/AdapterTypeAdapter.java       |  44 ++
 .../serializers/json/EcTypeAdapter.java            |  45 ++
 .../serializers/json/EpaTypeAdapter.java           |  48 ++
 .../serializers/json/GsonSerializer.java           | 147 +++++
 .../serializers/json/JsonLdSerializer.java         |  68 ++
 .../serializers/json/PeTypeAdapter.java            |  38 ++
 .../json/ProcessingElementSerializer.java          |  57 ++
 .../serializers/json/RangeSerializer.java          |  57 ++
 .../json/RuntimeTypeAdapterFactory.java            | 244 ++++++++
 .../json/TransformationRuleSerializer.java         |  58 ++
 .../serializers/json/UriSerializer.java            |  42 ++
 .../apache/streampipes/serializers/json/Utils.java |  44 ++
 .../jsonld/CustomAnnotationProvider.java           | 244 ++++++++
 .../serializers/jsonld/JsonLdTransformer.java      | 141 +++++
 .../serializers/jsonld/RdfTransformer.java         |  37 ++
 .../serializers/json/AdapterSerializer.java        |  59 --
 .../serializers/json/AdapterTypeAdapter.java       |  44 --
 .../serializers/json/EcTypeAdapter.java            |  45 --
 .../serializers/json/EpaTypeAdapter.java           |  48 --
 .../serializers/json/GsonSerializer.java           | 147 -----
 .../serializers/json/JsonLdSerializer.java         |  68 --
 .../serializers/json/PeTypeAdapter.java            |  38 --
 .../json/ProcessingElementSerializer.java          |  57 --
 .../serializers/json/RangeSerializer.java          |  57 --
 .../json/RuntimeTypeAdapterFactory.java            | 244 --------
 .../json/TransformationRuleSerializer.java         |  58 --
 .../serializers/json/UriSerializer.java            |  42 --
 .../org/streampipes/serializers/json/Utils.java    |  44 --
 .../jsonld/CustomAnnotationProvider.java           | 244 --------
 .../serializers/jsonld/JsonLdTransformer.java      | 141 -----
 .../serializers/jsonld/RdfTransformer.java         |  37 --
 streampipes-sources/pom.xml                        |   4 +-
 .../sources/AbstractAdapterIncludedStream.java     |  30 +
 .../sources/AbstractAlreadyExistingStream.java     |  35 ++
 .../sources/AbstractAdapterIncludedStream.java     |  30 -
 .../sources/AbstractAlreadyExistingStream.java     |  35 --
 streampipes-storage-api/pom.xml                    |   6 +-
 .../streampipes/storage/api/IAdapterStorage.java   |  36 ++
 .../storage/api/IAdapterTemplateStorage.java       |  36 ++
 .../storage/api/IAssetDashboardStorage.java        |  33 +
 .../storage/api/IBackgroundKnowledgeStorage.java   |  75 +++
 .../api/IConnectWorkerContainerStorage.java        |  35 ++
 .../streampipes/storage/api/IDataLakeStorage.java  |  30 +
 .../storage/api/IFileMetadataStorage.java          |  35 ++
 .../streampipes/storage/api/INoSqlStorage.java     |  42 ++
 .../storage/api/INotificationStorage.java          |  39 ++
 .../storage/api/IOntologyContextStorage.java       |  32 +
 .../storage/api/IPipelineCategoryStorage.java      |  33 +
 .../api/IPipelineElementConnectionStorage.java     |  32 +
 .../api/IPipelineElementDescriptionStorage.java    | 104 +++
 .../IPipelineElementDescriptionStorageCache.java   |  27 +
 .../api/IPipelineMonitoringDataStorage.java        |  36 ++
 .../streampipes/storage/api/IPipelineStorage.java  |  47 ++
 .../storage/api/IRdfEndpointStorage.java           |  32 +
 .../streampipes/storage/api/ITripleStorage.java    |  32 +
 .../streampipes/storage/api/IUserStorage.java      |  36 ++
 .../storage/api/IVisualizationStorage.java         |  32 +
 .../streampipes/storage/api/IAdapterStorage.java   |  36 --
 .../storage/api/IAdapterTemplateStorage.java       |  36 --
 .../storage/api/IAssetDashboardStorage.java        |  33 -
 .../storage/api/IBackgroundKnowledgeStorage.java   |  75 ---
 .../api/IConnectWorkerContainerStorage.java        |  35 --
 .../streampipes/storage/api/IDataLakeStorage.java  |  30 -
 .../storage/api/IFileMetadataStorage.java          |  35 --
 .../org/streampipes/storage/api/INoSqlStorage.java |  42 --
 .../storage/api/INotificationStorage.java          |  39 --
 .../storage/api/IOntologyContextStorage.java       |  32 -
 .../storage/api/IPipelineCategoryStorage.java      |  33 -
 .../api/IPipelineElementConnectionStorage.java     |  32 -
 .../api/IPipelineElementDescriptionStorage.java    | 104 ---
 .../IPipelineElementDescriptionStorageCache.java   |  27 -
 .../api/IPipelineMonitoringDataStorage.java        |  36 --
 .../streampipes/storage/api/IPipelineStorage.java  |  47 --
 .../storage/api/IRdfEndpointStorage.java           |  32 -
 .../streampipes/storage/api/ITripleStorage.java    |  32 -
 .../org/streampipes/storage/api/IUserStorage.java  |  36 --
 .../storage/api/IVisualizationStorage.java         |  32 -
 streampipes-storage-couchdb/pom.xml                |  12 +-
 .../storage/couchdb/CouchDbStorageManager.java     |  81 +++
 .../storage/couchdb/dao/AbstractDao.java           |  67 ++
 .../streampipes/storage/couchdb/dao/DbCommand.java |  44 ++
 .../storage/couchdb/dao/DeleteCommand.java         |  44 ++
 .../storage/couchdb/dao/FindAllCommand.java        |  40 ++
 .../storage/couchdb/dao/FindCommand.java           |  44 ++
 .../storage/couchdb/dao/PersistCommand.java        |  41 ++
 .../storage/couchdb/dao/UpdateCommand.java         |  43 ++
 .../storage/couchdb/impl/AdapterStorageImpl.java   |  72 +++
 .../couchdb/impl/AdapterTemplateStorageImpl.java   |  70 +++
 .../couchdb/impl/AssetDashboardStorageImpl.java    |  52 ++
 .../couchdb/impl/ConnectionStorageImpl.java        | 105 ++++
 .../impl/ConnectionWorkerContainerStorageImpl.java |  71 +++
 .../storage/couchdb/impl/DataLakeStorageImpl.java  |  44 ++
 .../couchdb/impl/FileMetadataStorageImpl.java      |  67 ++
 .../couchdb/impl/MonitoringDataStorageImpl.java    |  69 ++
 .../couchdb/impl/NotificationStorageImpl.java      |  78 +++
 .../couchdb/impl/PipelineCategoryStorageImpl.java  |  49 ++
 .../storage/couchdb/impl/PipelineStorageImpl.java  | 123 ++++
 .../couchdb/impl/RdfEndpointStorageImpl.java       |  50 ++
 .../storage/couchdb/impl/UserStorage.java          | 101 +++
 .../couchdb/impl/VisualizationStorageImpl.java     |  74 +++
 .../storage/couchdb/utils/CouchDbConfig.java       |  54 ++
 .../streampipes/storage/couchdb/utils/Utils.java   | 148 +++++
 .../storage/couchdb/CouchDbStorageManager.java     |  81 ---
 .../storage/couchdb/dao/AbstractDao.java           |  67 --
 .../streampipes/storage/couchdb/dao/DbCommand.java |  44 --
 .../storage/couchdb/dao/DeleteCommand.java         |  44 --
 .../storage/couchdb/dao/FindAllCommand.java        |  40 --
 .../storage/couchdb/dao/FindCommand.java           |  44 --
 .../storage/couchdb/dao/PersistCommand.java        |  41 --
 .../storage/couchdb/dao/UpdateCommand.java         |  43 --
 .../storage/couchdb/impl/AdapterStorageImpl.java   |  72 ---
 .../couchdb/impl/AdapterTemplateStorageImpl.java   |  70 ---
 .../couchdb/impl/AssetDashboardStorageImpl.java    |  52 --
 .../couchdb/impl/ConnectionStorageImpl.java        | 105 ----
 .../impl/ConnectionWorkerContainerStorageImpl.java |  71 ---
 .../storage/couchdb/impl/DataLakeStorageImpl.java  |  44 --
 .../couchdb/impl/FileMetadataStorageImpl.java      |  67 --
 .../couchdb/impl/MonitoringDataStorageImpl.java    |  69 --
 .../couchdb/impl/NotificationStorageImpl.java      |  78 ---
 .../couchdb/impl/PipelineCategoryStorageImpl.java  |  49 --
 .../storage/couchdb/impl/PipelineStorageImpl.java  | 123 ----
 .../couchdb/impl/RdfEndpointStorageImpl.java       |  50 --
 .../storage/couchdb/impl/UserStorage.java          | 101 ---
 .../couchdb/impl/VisualizationStorageImpl.java     |  74 ---
 .../storage/couchdb/utils/CouchDbConfig.java       |  54 --
 .../streampipes/storage/couchdb/utils/Utils.java   | 148 -----
 streampipes-storage-management/pom.xml             |   8 +-
 .../storage/management/StorageDispatcher.java      |  37 ++
 .../storage/management/StorageManager.java         |  49 ++
 .../storage/management/StorageDispatcher.java      |  37 --
 .../storage/management/StorageManager.java         |  49 --
 streampipes-storage-rdf4j/pom.xml                  |  12 +-
 .../streampipes/storage/Rdf4JStorageManager.java   | 141 +++++
 .../storage/rdf4j/config/Rdf4JConfig.java          |  71 +++
 .../rdf4j/filter/BackgroundKnowledgeFilter.java    |  84 +++
 .../streampipes/storage/rdf4j/filter/Filter.java   |  48 ++
 .../rdf4j/impl/BackgroundKnowledgeStorageImpl.java | 467 ++++++++++++++
 .../storage/rdf4j/impl/ContextStorageImpl.java     | 131 ++++
 .../rdf4j/impl/PipelineElementInMemoryStorage.java | 325 ++++++++++
 .../rdf4j/impl/PipelineElementStorageRequests.java | 288 +++++++++
 .../rdf4j/ontology/ClassHierarchyExecutor.java     | 116 ++++
 .../rdf4j/ontology/ConceptUpdateExecutor.java      |  52 ++
 .../rdf4j/ontology/InstanceUpdateExecutor.java     |  51 ++
 .../rdf4j/ontology/PropertyUpdateExecutor.java     |  48 ++
 .../storage/rdf4j/ontology/QueryExecutor.java      |  62 ++
 .../storage/rdf4j/ontology/RangeQueryExecutor.java | 149 +++++
 .../storage/rdf4j/ontology/UpdateExecutor.java     |  37 ++
 .../storage/rdf4j/sparql/QueryBuilder.java         | 349 +++++++++++
 .../rdf4j/util/BackgroundKnowledgeUtils.java       |  92 +++
 .../storage/rdf4j/util/Transformer.java            |  34 +
 .../streampipes/storage/Rdf4JStorageManager.java   | 141 -----
 .../storage/rdf4j/config/Rdf4JConfig.java          |  71 ---
 .../rdf4j/filter/BackgroundKnowledgeFilter.java    |  84 ---
 .../streampipes/storage/rdf4j/filter/Filter.java   |  48 --
 .../rdf4j/impl/BackgroundKnowledgeStorageImpl.java | 467 --------------
 .../storage/rdf4j/impl/ContextStorageImpl.java     | 131 ----
 .../rdf4j/impl/PipelineElementInMemoryStorage.java | 325 ----------
 .../rdf4j/impl/PipelineElementStorageRequests.java | 288 ---------
 .../rdf4j/ontology/ClassHierarchyExecutor.java     | 116 ----
 .../rdf4j/ontology/ConceptUpdateExecutor.java      |  52 --
 .../rdf4j/ontology/InstanceUpdateExecutor.java     |  51 --
 .../rdf4j/ontology/PropertyUpdateExecutor.java     |  48 --
 .../storage/rdf4j/ontology/QueryExecutor.java      |  62 --
 .../storage/rdf4j/ontology/RangeQueryExecutor.java | 149 -----
 .../storage/rdf4j/ontology/UpdateExecutor.java     |  37 --
 .../storage/rdf4j/sparql/QueryBuilder.java         | 349 -----------
 .../rdf4j/util/BackgroundKnowledgeUtils.java       |  92 ---
 .../storage/rdf4j/util/Transformer.java            |  34 -
 streampipes-test-utils/pom.xml                     |   4 +-
 .../test/generator/EventPropertyGenerator.java     |  22 +
 .../test/generator/EventSchemaGenerator.java       |  22 +
 .../test/generator/EventStreamGenerator.java       |  51 ++
 .../test/generator/InvocationGraphGenerator.java   |  46 ++
 .../grounding/EventGroundingGenerator.java         |  35 ++
 .../grounding/protocol/ProtocolGenerator.java      |  34 +
 .../test/generator/EventPropertyGenerator.java     |  22 -
 .../test/generator/EventSchemaGenerator.java       |  22 -
 .../test/generator/EventStreamGenerator.java       |  51 --
 .../test/generator/InvocationGraphGenerator.java   |  46 --
 .../grounding/EventGroundingGenerator.java         |  35 --
 .../grounding/protocol/ProtocolGenerator.java      |  34 -
 streampipes-user-management/pom.xml                |   6 +-
 .../StreamPipesCredentialsMatcher.java             |  42 ++
 .../authentication/StreamPipesRealm.java           |  97 +++
 .../management/encryption/CredentialsManager.java  |  96 +++
 .../user/management/service/UserService.java       |  44 ++
 .../user/management/util/PasswordUtil.java         |  88 +++
 .../StreamPipesCredentialsMatcher.java             |  42 --
 .../authentication/StreamPipesRealm.java           |  97 ---
 .../management/encryption/CredentialsManager.java  |  96 ---
 .../user/management/service/UserService.java       |  44 --
 .../user/management/util/PasswordUtil.java         |  88 ---
 streampipes-vocabulary/pom.xml                     |   2 +-
 .../org/apache/streampipes/vocabulary/FOAF.java    |  53 ++
 .../java/org/apache/streampipes/vocabulary/GR.java |  67 ++
 .../org/apache/streampipes/vocabulary/Geo.java     |  26 +
 .../apache/streampipes/vocabulary/Geonames.java    |  33 +
 .../streampipes/vocabulary/MessageFormat.java      |  33 +
 .../org/apache/streampipes/vocabulary/MhWirth.java |  48 ++
 .../apache/streampipes/vocabulary/ProaSense.java   |  26 +
 .../org/apache/streampipes/vocabulary/RDF.java     |  29 +
 .../org/apache/streampipes/vocabulary/RDFS.java    |  28 +
 .../java/org/apache/streampipes/vocabulary/SO.java | 463 ++++++++++++++
 .../apache/streampipes/vocabulary/SPSensor.java    |  32 +
 .../org/apache/streampipes/vocabulary/SSN.java     |  34 +
 .../apache/streampipes/vocabulary/Statistics.java  |  31 +
 .../apache/streampipes/vocabulary/StreamPipes.java | 355 +++++++++++
 .../org/apache/streampipes/vocabulary/XSD.java     | 170 +++++
 .../main/java/org/streampipes/vocabulary/FOAF.java |  53 --
 .../main/java/org/streampipes/vocabulary/GR.java   |  67 --
 .../main/java/org/streampipes/vocabulary/Geo.java  |  26 -
 .../java/org/streampipes/vocabulary/Geonames.java  |  33 -
 .../org/streampipes/vocabulary/MessageFormat.java  |  33 -
 .../java/org/streampipes/vocabulary/MhWirth.java   |  48 --
 .../java/org/streampipes/vocabulary/ProaSense.java |  26 -
 .../main/java/org/streampipes/vocabulary/RDF.java  |  29 -
 .../main/java/org/streampipes/vocabulary/RDFS.java |  28 -
 .../main/java/org/streampipes/vocabulary/SO.java   | 463 --------------
 .../java/org/streampipes/vocabulary/SPSensor.java  |  32 -
 .../main/java/org/streampipes/vocabulary/SSN.java  |  34 -
 .../org/streampipes/vocabulary/Statistics.java     |  31 -
 .../org/streampipes/vocabulary/StreamPipes.java    | 355 -----------
 .../main/java/org/streampipes/vocabulary/XSD.java  | 170 -----
 streampipes-wrapper-distributed/pom.xml            |   8 +-
 .../distributed/runtime/DistributedRuntime.java    | 112 ++++
 .../distributed/runtime/DistributedRuntime.java    | 112 ----
 streampipes-wrapper-flink/pom.xml                  |   4 +-
 .../wrapper/flink/FlinkDataProcessorDeclarer.java  |  28 +
 .../wrapper/flink/FlinkDataProcessorRuntime.java   | 108 ++++
 .../wrapper/flink/FlinkDataSinkDeclarer.java       |  27 +
 .../wrapper/flink/FlinkDataSinkRuntime.java        |  64 ++
 .../wrapper/flink/FlinkDeploymentConfig.java       |  50 ++
 .../streampipes/wrapper/flink/FlinkRuntime.java    | 308 +++++++++
 .../wrapper/flink/consumer/JmsConsumer.java        |  80 +++
 .../flink/converter/EventToMapConverter.java       |  33 +
 .../flink/converter/MapToEventConverter.java       |  45 ++
 .../wrapper/flink/logger/StatisticLogger.java      |  42 ++
 .../flink/serializer/ByteArrayDeserializer.java    |  44 ++
 .../flink/serializer/ByteArraySerializer.java      |  43 ++
 .../flink/serializer/SimpleJmsSerializer.java      |  45 ++
 .../flink/serializer/SimpleKafkaSerializer.java    |  38 ++
 .../wrapper/flink/sink/FlinkJmsProducer.java       |  65 ++
 .../flink/status/PipelineElementStatusSender.java  |  45 ++
 .../status/PipelineElementStatusSenderFactory.java |  42 ++
 .../wrapper/flink/FlinkDataProcessorDeclarer.java  |  28 -
 .../wrapper/flink/FlinkDataProcessorRuntime.java   | 108 ----
 .../wrapper/flink/FlinkDataSinkDeclarer.java       |  27 -
 .../wrapper/flink/FlinkDataSinkRuntime.java        |  64 --
 .../wrapper/flink/FlinkDeploymentConfig.java       |  50 --
 .../streampipes/wrapper/flink/FlinkRuntime.java    | 308 ---------
 .../wrapper/flink/consumer/JmsConsumer.java        |  80 ---
 .../flink/converter/EventToMapConverter.java       |  33 -
 .../flink/converter/MapToEventConverter.java       |  45 --
 .../wrapper/flink/logger/StatisticLogger.java      |  42 --
 .../flink/serializer/ByteArrayDeserializer.java    |  44 --
 .../flink/serializer/ByteArraySerializer.java      |  43 --
 .../flink/serializer/SimpleJmsSerializer.java      |  45 --
 .../flink/serializer/SimpleKafkaSerializer.java    |  38 --
 .../wrapper/flink/sink/FlinkJmsProducer.java       |  65 --
 .../flink/status/PipelineElementStatusSender.java  |  45 --
 .../status/PipelineElementStatusSenderFactory.java |  42 --
 streampipes-wrapper-kafka-streams/pom.xml          |   4 +-
 .../kafka/KafkaStreamsDataProcessorDeclarer.java   |  27 +
 .../kafka/KafkaStreamsDataProcessorRuntime.java    |  79 +++
 .../kafka/KafkaStreamsDataSinkDeclarer.java        |  25 +
 .../wrapper/kafka/KafkaStreamsDataSinkRuntime.java |  38 ++
 .../wrapper/kafka/KafkaStreamsRuntime.java         |  74 +++
 .../wrapper/kafka/converter/JsonToMapFormat.java   |  52 ++
 .../wrapper/kafka/converter/MapToJsonFormat.java   |  45 ++
 .../kafka/KafkaStreamsDataProcessorDeclarer.java   |  27 -
 .../kafka/KafkaStreamsDataProcessorRuntime.java    |  79 ---
 .../kafka/KafkaStreamsDataSinkDeclarer.java        |  25 -
 .../wrapper/kafka/KafkaStreamsDataSinkRuntime.java |  38 --
 .../wrapper/kafka/KafkaStreamsRuntime.java         |  74 ---
 .../wrapper/kafka/converter/JsonToMapFormat.java   |  52 --
 .../wrapper/kafka/converter/MapToJsonFormat.java   |  45 --
 streampipes-wrapper-siddhi/pom.xml                 |   4 +-
 .../wrapper/siddhi/engine/SiddhiDebugCallback.java |  26 +
 .../wrapper/siddhi/engine/SiddhiEventEngine.java   | 251 ++++++++
 .../wrapper/siddhi/manager/SpSiddhiManager.java    |  35 ++
 .../wrapper/siddhi/engine/SiddhiDebugCallback.java |  26 -
 .../wrapper/siddhi/engine/SiddhiEventEngine.java   | 251 --------
 .../wrapper/siddhi/manager/SpSiddhiManager.java    |  35 --
 streampipes-wrapper-spark/pom.xml                  |   8 +-
 .../wrapper/spark/AbstractSparkDeclarer.java       |  52 ++
 .../wrapper/spark/SparkDataProcessorDeclarer.java  |  28 +
 .../wrapper/spark/SparkDataProcessorRuntime.java   | 162 +++++
 .../wrapper/spark/SparkDeploymentConfig.java       | 100 +++
 .../streampipes/wrapper/spark/SparkRuntime.java    | 188 ++++++
 .../wrapper/spark/converter/JsonToMapFormat.java   |  52 ++
 .../spark/serializer/SimpleKafkaSerializer.java    |  69 ++
 .../wrapper/spark/AbstractSparkDeclarer.java       |  52 --
 .../wrapper/spark/SparkDataProcessorDeclarer.java  |  28 -
 .../wrapper/spark/SparkDataProcessorRuntime.java   | 162 -----
 .../wrapper/spark/SparkDeploymentConfig.java       | 100 ---
 .../streampipes/wrapper/spark/SparkRuntime.java    | 188 ------
 .../wrapper/spark/converter/JsonToMapFormat.java   |  52 --
 .../spark/serializer/SimpleKafkaSerializer.java    |  69 --
 streampipes-wrapper-standalone/pom.xml             |   4 +-
 .../AbstractConfiguredPipelineElement.java         |  46 ++
 .../standalone/ConfiguredEventProcessor.java       |  33 +
 .../wrapper/standalone/ConfiguredEventSink.java    |  33 +
 .../ConfiguredExternalEventProcessor.java          |  33 +
 .../standalone/ConfiguredExternalEventSink.java    |  32 +
 .../StandaloneEventProcessingDeclarer.java         |  44 ++
 .../StandaloneEventProcessorDeclarerSingleton.java |  43 ++
 .../declarer/StandaloneEventSinkDeclarer.java      |  45 ++
 .../StandaloneEventSinkDeclarerSingleton.java      |  44 ++
 .../StandaloneExternalEventProcessingDeclarer.java |  45 ++
 .../StandaloneExternalEventSinkDeclarer.java       |  46 ++
 .../wrapper/standalone/manager/PManager.java       |  43 ++
 .../standalone/manager/ProtocolManager.java        | 115 ++++
 .../standalone/routing/StandaloneSpCollector.java  |  66 ++
 .../routing/StandaloneSpInputCollector.java        |  76 +++
 .../routing/StandaloneSpOutputCollector.java       |  65 ++
 .../runtime/StandaloneEventProcessorRuntime.java   |  92 +++
 .../runtime/StandaloneEventSinkRuntime.java        |  80 +++
 .../StandaloneExternalEventProcessorRuntime.java   |  69 ++
 .../StandaloneExternalEventSinkRuntime.java        |  68 ++
 .../runtime/StandalonePipelineElementRuntime.java  |  73 +++
 .../AbstractConfiguredPipelineElement.java         |  46 --
 .../standalone/ConfiguredEventProcessor.java       |  33 -
 .../wrapper/standalone/ConfiguredEventSink.java    |  33 -
 .../ConfiguredExternalEventProcessor.java          |  33 -
 .../standalone/ConfiguredExternalEventSink.java    |  32 -
 .../StandaloneEventProcessingDeclarer.java         |  44 --
 .../StandaloneEventProcessorDeclarerSingleton.java |  43 --
 .../declarer/StandaloneEventSinkDeclarer.java      |  45 --
 .../StandaloneEventSinkDeclarerSingleton.java      |  44 --
 .../StandaloneExternalEventProcessingDeclarer.java |  45 --
 .../StandaloneExternalEventSinkDeclarer.java       |  46 --
 .../wrapper/standalone/manager/PManager.java       |  43 --
 .../standalone/manager/ProtocolManager.java        | 115 ----
 .../standalone/routing/StandaloneSpCollector.java  |  66 --
 .../routing/StandaloneSpInputCollector.java        |  76 ---
 .../routing/StandaloneSpOutputCollector.java       |  65 --
 .../runtime/StandaloneEventProcessorRuntime.java   |  92 ---
 .../runtime/StandaloneEventSinkRuntime.java        |  80 ---
 .../StandaloneExternalEventProcessorRuntime.java   |  69 --
 .../StandaloneExternalEventSinkRuntime.java        |  68 --
 .../runtime/StandalonePipelineElementRuntime.java  |  73 ---
 streampipes-wrapper/pom.xml                        |  10 +-
 .../context/EventProcessorRuntimeContext.java      |  29 +
 .../wrapper/context/EventSinkRuntimeContext.java   |  21 +
 .../wrapper/context/RuntimeContext.java            |  33 +
 .../context/SpEventProcessorRuntimeContext.java    |  52 ++
 .../wrapper/context/SpEventSinkRuntimeContext.java |  32 +
 .../wrapper/context/SpRuntimeContext.java          |  55 ++
 .../wrapper/declarer/EventProcessorDeclarer.java   |  47 ++
 .../wrapper/declarer/EventSinkDeclarer.java        |  43 ++
 .../wrapper/declarer/PipelineElementDeclarer.java  |  66 ++
 .../wrapper/params/binding/BindingParams.java      |  73 +++
 .../binding/EventProcessorBindingParams.java       |  79 +++
 .../params/binding/EventSinkBindingParams.java     |  39 ++
 .../wrapper/params/binding/InputStreamParams.java  |  86 +++
 .../wrapper/params/binding/OutputStreamParams.java |  58 ++
 .../runtime/EventProcessorRuntimeParams.java       |  40 ++
 .../params/runtime/EventSinkRuntimeParams.java     |  38 ++
 .../wrapper/params/runtime/RuntimeParams.java      | 103 +++
 .../wrapper/routing/PipelineElementCollector.java  |  32 +
 .../wrapper/routing/RawDataProcessor.java          |  27 +
 .../wrapper/routing/SpInputCollector.java          |  24 +
 .../wrapper/routing/SpOutputCollector.java         |  30 +
 .../wrapper/runtime/EventProcessor.java            |  36 ++
 .../streampipes/wrapper/runtime/EventSink.java     |  35 ++
 .../wrapper/runtime/ExternalEventProcessor.java    |  31 +
 .../wrapper/runtime/ExternalEventSink.java         |  30 +
 .../wrapper/runtime/PipelineElement.java           |  30 +
 .../wrapper/runtime/PipelineElementRuntime.java    |  40 ++
 .../context/EventProcessorRuntimeContext.java      |  29 -
 .../wrapper/context/EventSinkRuntimeContext.java   |  21 -
 .../wrapper/context/RuntimeContext.java            |  33 -
 .../context/SpEventProcessorRuntimeContext.java    |  52 --
 .../wrapper/context/SpEventSinkRuntimeContext.java |  32 -
 .../wrapper/context/SpRuntimeContext.java          |  55 --
 .../wrapper/declarer/EventProcessorDeclarer.java   |  47 --
 .../wrapper/declarer/EventSinkDeclarer.java        |  43 --
 .../wrapper/declarer/PipelineElementDeclarer.java  |  66 --
 .../wrapper/params/binding/BindingParams.java      |  73 ---
 .../binding/EventProcessorBindingParams.java       |  79 ---
 .../params/binding/EventSinkBindingParams.java     |  39 --
 .../wrapper/params/binding/InputStreamParams.java  |  86 ---
 .../wrapper/params/binding/OutputStreamParams.java |  58 --
 .../runtime/EventProcessorRuntimeParams.java       |  40 --
 .../params/runtime/EventSinkRuntimeParams.java     |  38 --
 .../wrapper/params/runtime/RuntimeParams.java      | 103 ---
 .../wrapper/routing/PipelineElementCollector.java  |  32 -
 .../wrapper/routing/RawDataProcessor.java          |  27 -
 .../wrapper/routing/SpInputCollector.java          |  24 -
 .../wrapper/routing/SpOutputCollector.java         |  30 -
 .../wrapper/runtime/EventProcessor.java            |  36 --
 .../org/streampipes/wrapper/runtime/EventSink.java |  35 --
 .../wrapper/runtime/ExternalEventProcessor.java    |  31 -
 .../wrapper/runtime/ExternalEventSink.java         |  30 -
 .../wrapper/runtime/PipelineElement.java           |  30 -
 .../wrapper/runtime/PipelineElementRuntime.java    |  40 --
 tools/maven/checkstyle.xml                         |   2 +-
 tools/maven/suppressions.xml                       |   2 +-
 ui/deployment/toolbar.controller.mst               |   2 +-
 ui/src/app/connect/format-form/csv.ts              |   2 +-
 ui/src/app/connect/format-form/json.ts             |   2 +-
 .../component/adapter-started-dialog.component.ts  |   2 +-
 .../connect/select-protocol-component/protocol.ts  |   2 +-
 .../propertyselection/property-selection.tmpl.html |   2 +-
 .../editor/components/freetext/freetext.tmpl.html  |   4 +-
 .../pipeline-element-options.controller.ts         |   2 +-
 .../components/pipeline/pipeline.controller.ts     |   4 +-
 .../customize.controller.ts                        |   2 +-
 .../customizeElementDialog.tmpl.html               |   4 +-
 ui/src/app/editor/editor.controller.ts             |   8 +-
 .../general/value-specification.controller.ts      |   4 +-
 .../grounding/supported-grounding.controller.ts    |   4 +-
 .../grounding/transport-protocol.controller.ts     |   6 +-
 .../grounding/transport-protocol.tmpl.html         |   4 +-
 .../output/output-strategy.controller.ts           |  10 +-
 .../property/event-properties.controller.ts        |   2 +-
 .../property/property-restriction.controller.ts    |   2 +-
 .../property/static-properties.controller.ts       |  14 +-
 .../property-quality-definitions.controller.ts     |   6 +-
 .../stream-quality-definitions.controller.ts       |   4 +-
 .../sepa/sepa-stream-detail.controller.ts          |   2 +-
 ui/src/app/services/property-selector.service.ts   |   2 +-
 2292 files changed, 76467 insertions(+), 76499 deletions(-)

diff --git a/README.md b/README.md
index 2b3a3fa..a4db9f5 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@
 
 [![Travis Badge](https://travis-ci.org/apache/incubator-streampipes.svg?branch=dev)](https://travis-ci.org/apache/incubator-streampipes.svg?branch=dev)
 [![Docker pulls](https://img.shields.io/docker/pulls/streampipes/backend.svg)](https://hub.docker.com/r/streampipes/backend/)
-[![Maven central](https://img.shields.io/maven-central/v/org.streampipes/streampipes-backend.svg)](https://img.shields.io/maven-central/v/org.streampipes/streampipes-backend.svg)
+[![Maven central](https://img.shields.io/maven-central/v/org.apache.streampipes/streampipes-backend.svg)](https://img.shields.io/maven-central/v/org.apache.streampipes/streampipes-backend.svg)
 [![License](https://img.shields.io/github/license/apache/incubator-streampipes.svg)](http://www.apache.org/licenses/LICENSE-2.0)
 [![Last commit](https://img.shields.io/github/last-commit/apache/incubator-streampipes.svg)]()
 [![Twitter](https://img.shields.io/twitter/follow/StreamPipes.svg?label=Follow&style=social)](https://twitter.com/StreamPipes)
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/README.md b/archetypes/streampipes-archetype-pe-processors-flink/README.md
index 3d53661..92387cb 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/README.md
+++ b/archetypes/streampipes-archetype-pe-processors-flink/README.md
@@ -21,7 +21,7 @@
 ### Usage
 
 mvn archetype:generate                                  \
-			-DarchetypeGroupId=org.streampipes                \
+			-DarchetypeGroupId=org.apache.streampipes                \
 			-DarchetypeArtifactId=streampipes-archetype-pe-processors-flink          \
 			-DarchetypeVersion=0.60.2-SNAPSHOT                \
 			-DgroupId=my.test.groupId \
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/pom.xml b/archetypes/streampipes-archetype-pe-processors-flink/pom.xml
index a3b2bd1..ee24e77 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/pom.xml
+++ b/archetypes/streampipes-archetype-pe-processors-flink/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/pom.xml b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/pom.xml
index 42859f5..b83d140 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/pom.xml
@@ -12,7 +12,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -27,7 +27,7 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-commons</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -42,7 +42,7 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-wrapper-flink</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -62,7 +62,7 @@
             <version>1.9.2</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>${sp.version}</version>
         </dependency>
@@ -77,37 +77,37 @@
             <version>1.7.24</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-json</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-cbor</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-smile</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-fst</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-jms</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>${sp.version}</version>
         </dependency>
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
index 9190408..c697419 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.config;
 
-import org.streampipes.config.SpConfig;
-import org.streampipes.container.model.PeConfig;
+import org.apache.streampipes.config.SpConfig;
+import org.apache.streampipes.container.model.PeConfig;
 
 public enum Config implements PeConfig {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
index 89d8e4d..bf38b67 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
@@ -3,18 +3,18 @@
 #set( $symbol_escape = '\' )
 package ${package}.main;
 
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.standalone.init.StandaloneModelSubmitter;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.standalone.init.StandaloneModelSubmitter;
 
 import ${package}.config.Config;
 import ${package}.pe.processor.${packageName}.${classNamePrefix}Controller;
 
-import org.streampipes.dataformat.cbor.CborDataFormatFactory;
-import org.streampipes.dataformat.fst.FstDataFormatFactory;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.dataformat.smile.SmileDataFormatFactory;
-import org.streampipes.messaging.jms.SpJmsProtocolFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.dataformat.cbor.CborDataFormatFactory;
+import org.apache.streampipes.dataformat.fst.FstDataFormatFactory;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
+import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 public class Init extends StandaloneModelSubmitter {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
index 17b2edc..628b36a 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
@@ -7,7 +7,7 @@ package ${package}.pe.processor.${packageName};
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.util.Collector;
 
-import org.streampipes.model.runtime.Event;
+import org.apache.streampipes.model.runtime.Event;
 
 public class ${classNamePrefix} implements FlatMapFunction<Event, Event> {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
index 905a7b9..abd8823 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
@@ -5,21 +5,21 @@ package ${package}.pe.processor.${packageName};
 
 import ${package}.config.Config;
 
-import org.streampipes.model.DataProcessorType;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.sdk.builder.ProcessingElementBuilder;
-import org.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.streampipes.sdk.extractor.ProcessingElementParameterExtractor;
-import org.streampipes.sdk.helpers.EpRequirements;
-import org.streampipes.sdk.helpers.Labels;
-import org.streampipes.sdk.helpers.OutputStrategies;
-import org.streampipes.sdk.helpers.SupportedFormats;
-import org.streampipes.sdk.helpers.SupportedProtocols;
-import org.streampipes.sdk.helpers.*;
-import org.streampipes.sdk.utils.Assets;
-import org.streampipes.wrapper.flink.FlinkDataProcessorDeclarer;
-import org.streampipes.wrapper.flink.FlinkDataProcessorRuntime;
+import org.apache.streampipes.model.DataProcessorType;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.sdk.builder.ProcessingElementBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.extractor.ProcessingElementParameterExtractor;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.OutputStrategies;
+import org.apache.streampipes.sdk.helpers.SupportedFormats;
+import org.apache.streampipes.sdk.helpers.SupportedProtocols;
+import org.apache.streampipes.sdk.helpers.*;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.wrapper.flink.FlinkDataProcessorDeclarer;
+import org.apache.streampipes.wrapper.flink.FlinkDataProcessorRuntime;
 
 public class ${classNamePrefix}Controller extends
 				FlinkDataProcessorDeclarer<${classNamePrefix}Parameters> {
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
index 4e9eaae..fbccde4 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.processor.${packageName};
 
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.wrapper.params.binding.EventProcessorBindingParams;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.wrapper.params.binding.EventProcessorBindingParams;
 
 public class ${classNamePrefix}Parameters extends EventProcessorBindingParams {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Program.java b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Program.java
index 026bde2..1f69406 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Program.java
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Program.java
@@ -6,9 +6,9 @@ package ${package}.pe.processor.${packageName};
 import ${package}.config.Config;
 
 import org.apache.flink.streaming.api.datastream.DataStream;
-import org.streampipes.model.runtime.Event;
-import org.streampipes.wrapper.flink.FlinkDataProcessorRuntime;
-import org.streampipes.wrapper.flink.FlinkDeploymentConfig;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.wrapper.flink.FlinkDataProcessorRuntime;
+import org.apache.streampipes.wrapper.flink.FlinkDeploymentConfig;
 
 import java.io.Serializable;
 
diff --git a/archetypes/streampipes-archetype-pe-processors-flink/src/test/resources/projects/basic/archetype.properties b/archetypes/streampipes-archetype-pe-processors-flink/src/test/resources/projects/basic/archetype.properties
index 4b42212..2c7da24 100644
--- a/archetypes/streampipes-archetype-pe-processors-flink/src/test/resources/projects/basic/archetype.properties
+++ b/archetypes/streampipes-archetype-pe-processors-flink/src/test/resources/projects/basic/archetype.properties
@@ -17,7 +17,7 @@
 #
 
 #Tue Nov 21 10:33:48 CET 2017
-package=org.streampipes.test
+package=org.apache.streampipes.test
 version=0.1-SNAPSHOT
 groupId=test-pe
 artifactId=basic
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/README.md b/archetypes/streampipes-archetype-pe-processors-jvm/README.md
index 45b1401..fc11576 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/README.md
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/README.md
@@ -21,7 +21,7 @@
 ### Usage
 
 mvn archetype:generate                                  \
-			-DarchetypeGroupId=org.streampipes                \
+			-DarchetypeGroupId=org.apache.streampipes                \
 			-DarchetypeArtifactId=streampipes-archetype-pe-processors-jvm          \
 			-DarchetypeVersion=0.60.2-SNAPSHOT               \
 			-DgroupId=my.groupId \
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/pom.xml b/archetypes/streampipes-archetype-pe-processors-jvm/pom.xml
index 1ced774..fb72328 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/pom.xml
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/pom.xml b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/pom.xml
index 8825ee4..7417f66 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/pom.xml
@@ -12,52 +12,52 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-wrapper-standalone</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-json</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-cbor</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-smile</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-fst</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-jms</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>${sp.version}</version>
         </dependency>
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
index 2e7eace..a18c127 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.config;
 
-import org.streampipes.config.SpConfig;
-import org.streampipes.container.model.PeConfig;
+import org.apache.streampipes.config.SpConfig;
+import org.apache.streampipes.container.model.PeConfig;
 
 import static ${package}.config.ConfigKeys.*;
 
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
index 3d13ae6..8befbb6 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
@@ -3,14 +3,14 @@
 #set( $symbol_escape = '\' )
 package ${package}.main;
 
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.standalone.init.StandaloneModelSubmitter;
-import org.streampipes.dataformat.cbor.CborDataFormatFactory;
-import org.streampipes.dataformat.fst.FstDataFormatFactory;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.dataformat.smile.SmileDataFormatFactory;
-import org.streampipes.messaging.jms.SpJmsProtocolFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.standalone.init.StandaloneModelSubmitter;
+import org.apache.streampipes.dataformat.cbor.CborDataFormatFactory;
+import org.apache.streampipes.dataformat.fst.FstDataFormatFactory;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
+import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 import ${package}.config.Config;
 import ${package}.pe.processor.${packageName}.${classNamePrefix}Controller;
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
index 9728ef5..3b0f993 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__.java
@@ -4,10 +4,10 @@
 
 package ${package}.pe.processor.${packageName};
 
-import org.streampipes.model.runtime.Event;
-import org.streampipes.wrapper.context.EventProcessorRuntimeContext;
-import org.streampipes.wrapper.routing.SpOutputCollector;
-import org.streampipes.wrapper.runtime.EventProcessor;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.wrapper.context.EventProcessorRuntimeContext;
+import org.apache.streampipes.wrapper.routing.SpOutputCollector;
+import org.apache.streampipes.wrapper.runtime.EventProcessor;
 
 import org.slf4j.Logger;
 
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
index 098343f..516341e 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Controller.java
@@ -3,21 +3,21 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.processor.${packageName};
 
-import org.streampipes.model.DataProcessorType;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.sdk.builder.ProcessingElementBuilder;
-import org.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.streampipes.sdk.extractor.ProcessingElementParameterExtractor;
-import org.streampipes.sdk.helpers.EpRequirements;
-import org.streampipes.sdk.helpers.Labels;
-import org.streampipes.sdk.helpers.OutputStrategies;
-import org.streampipes.sdk.helpers.SupportedFormats;
-import org.streampipes.sdk.helpers.SupportedProtocols;
-import org.streampipes.sdk.helpers.*;
-import org.streampipes.sdk.utils.Assets;
-import org.streampipes.wrapper.standalone.ConfiguredEventProcessor;
-import org.streampipes.wrapper.standalone.declarer.StandaloneEventProcessingDeclarer;
+import org.apache.streampipes.model.DataProcessorType;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.sdk.builder.ProcessingElementBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.extractor.ProcessingElementParameterExtractor;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.OutputStrategies;
+import org.apache.streampipes.sdk.helpers.SupportedFormats;
+import org.apache.streampipes.sdk.helpers.SupportedProtocols;
+import org.apache.streampipes.sdk.helpers.*;
+import org.apache.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.wrapper.standalone.ConfiguredEventProcessor;
+import org.apache.streampipes.wrapper.standalone.declarer.StandaloneEventProcessingDeclarer;
 
 public class ${classNamePrefix}Controller extends StandaloneEventProcessingDeclarer<${classNamePrefix}Parameters> {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
index 4e9eaae..fbccde4 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/main/resources/archetype-resources/src/main/java/pe/processor/__packageName__/__classNamePrefix__Parameters.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.processor.${packageName};
 
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.wrapper.params.binding.EventProcessorBindingParams;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.wrapper.params.binding.EventProcessorBindingParams;
 
 public class ${classNamePrefix}Parameters extends EventProcessorBindingParams {
 
diff --git a/archetypes/streampipes-archetype-pe-processors-jvm/src/test/resources/projects/basic/archetype.properties b/archetypes/streampipes-archetype-pe-processors-jvm/src/test/resources/projects/basic/archetype.properties
index 4b42212..2c7da24 100644
--- a/archetypes/streampipes-archetype-pe-processors-jvm/src/test/resources/projects/basic/archetype.properties
+++ b/archetypes/streampipes-archetype-pe-processors-jvm/src/test/resources/projects/basic/archetype.properties
@@ -17,7 +17,7 @@
 #
 
 #Tue Nov 21 10:33:48 CET 2017
-package=org.streampipes.test
+package=org.apache.streampipes.test
 version=0.1-SNAPSHOT
 groupId=test-pe
 artifactId=basic
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/README.md b/archetypes/streampipes-archetype-pe-sinks-flink/README.md
index 8acd272..1b6301a 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/README.md
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/README.md
@@ -21,7 +21,7 @@
 ### Usage
 
 mvn archetype:generate                                  \
-			-DarchetypeGroupId=org.streampipes                \
+			-DarchetypeGroupId=org.apache.streampipes                \
 			-DarchetypeArtifactId=streampipes-archetype-pe-sinks-flink         \
 			-DarchetypeVersion=0.60.2-SNAPSHOT                \
 			-DgroupId=my.groupId \
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/pom.xml b/archetypes/streampipes-archetype-pe-sinks-flink/pom.xml
index 9d4fb3a..424955d 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/pom.xml b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/pom.xml
index 42859f5..b83d140 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/pom.xml
@@ -12,7 +12,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -27,7 +27,7 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-commons</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -42,7 +42,7 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-wrapper-flink</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -62,7 +62,7 @@
             <version>1.9.2</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>${sp.version}</version>
         </dependency>
@@ -77,37 +77,37 @@
             <version>1.7.24</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-json</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-cbor</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-smile</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-fst</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-jms</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>${sp.version}</version>
         </dependency>
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
index da27036..2c6ed6c 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/config/Config.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.config;
 
-import org.streampipes.config.SpConfig;
-import org.streampipes.container.model.PeConfig;
+import org.apache.streampipes.config.SpConfig;
+import org.apache.streampipes.container.model.PeConfig;
 
 public enum Config implements PeConfig {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
index 4f01def..2baffc7 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/main/Init.java
@@ -3,21 +3,21 @@
 #set( $symbol_escape = '\' )
 package ${package}.main;
 
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.standalone.init.StandaloneModelSubmitter;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.standalone.init.StandaloneModelSubmitter;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 
 import ${package}.config.Config;
 import ${package}.pe.sink.${packageName}.${classNamePrefix}Controller;
 
-import org.streampipes.dataformat.cbor.CborDataFormatFactory;
-import org.streampipes.dataformat.fst.FstDataFormatFactory;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.dataformat.smile.SmileDataFormatFactory;
-import org.streampipes.messaging.jms.SpJmsProtocolFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.dataformat.cbor.CborDataFormatFactory;
+import org.apache.streampipes.dataformat.fst.FstDataFormatFactory;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
+import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 public class Init extends StandaloneModelSubmitter {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
index 4c03209..376e375 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
@@ -5,20 +5,20 @@ package ${package}.pe.sink.${packageName};
 
 import ${package}.config.Config;
 
-import org.streampipes.model.DataSinkType;
-import org.streampipes.model.graph.DataSinkDescription;
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.sdk.builder.DataSinkBuilder;
-import org.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.streampipes.sdk.extractor.DataSinkParameterExtractor;
-import org.streampipes.sdk.helpers.EpRequirements;
-import org.streampipes.sdk.helpers.Labels;
-import org.streampipes.sdk.helpers.SupportedFormats;
-import org.streampipes.sdk.helpers.SupportedProtocols;
-import org.streampipes.wrapper.flink.FlinkDataSinkDeclarer;
-import org.streampipes.wrapper.flink.FlinkDataSinkRuntime;
-import org.streampipes.sdk.helpers.*;
-import org.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.extractor.DataSinkParameterExtractor;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.SupportedFormats;
+import org.apache.streampipes.sdk.helpers.SupportedProtocols;
+import org.apache.streampipes.wrapper.flink.FlinkDataSinkDeclarer;
+import org.apache.streampipes.wrapper.flink.FlinkDataSinkRuntime;
+import org.apache.streampipes.sdk.helpers.*;
+import org.apache.streampipes.sdk.utils.Assets;
 
 public class ${classNamePrefix}Controller extends FlinkDataSinkDeclarer<${classNamePrefix}Parameters> {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
index 631a156..323467c 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.sink.${packageName};
 
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.wrapper.params.binding.EventSinkBindingParams;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.wrapper.params.binding.EventSinkBindingParams;
 
 public class ${classNamePrefix}Parameters extends EventSinkBindingParams {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Program.java b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Program.java
index bfda009..d03cf47 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Program.java
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Program.java
@@ -6,9 +6,9 @@ package ${package}.pe.sink.${packageName};
 import ${package}.config.Config;
 
 import org.apache.flink.streaming.api.datastream.DataStream;
-import org.streampipes.model.runtime.Event;
-import org.streampipes.wrapper.flink.FlinkDataSinkRuntime;
-import org.streampipes.wrapper.flink.FlinkDeploymentConfig;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.wrapper.flink.FlinkDataSinkRuntime;
+import org.apache.streampipes.wrapper.flink.FlinkDeploymentConfig;
 
 import java.io.Serializable;
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-flink/src/test/resources/projects/basic/archetype.properties b/archetypes/streampipes-archetype-pe-sinks-flink/src/test/resources/projects/basic/archetype.properties
index 4b42212..2c7da24 100644
--- a/archetypes/streampipes-archetype-pe-sinks-flink/src/test/resources/projects/basic/archetype.properties
+++ b/archetypes/streampipes-archetype-pe-sinks-flink/src/test/resources/projects/basic/archetype.properties
@@ -17,7 +17,7 @@
 #
 
 #Tue Nov 21 10:33:48 CET 2017
-package=org.streampipes.test
+package=org.apache.streampipes.test
 version=0.1-SNAPSHOT
 groupId=test-pe
 artifactId=basic
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/README.md b/archetypes/streampipes-archetype-pe-sinks-jvm/README.md
index c6eeed6..a662116 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/README.md
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/README.md
@@ -21,7 +21,7 @@
 ### Usage
 
 mvn archetype:generate                                  \
-			-DarchetypeGroupId=org.streampipes                \
+			-DarchetypeGroupId=org.apache.streampipes                \
 			-DarchetypeArtifactId=streampipes-archetype-pe-sinks-jvm          \
 			-DarchetypeVersion=0.60.2-SNAPSHOT                \
 			-DgroupId=my.groupId \
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/pom.xml b/archetypes/streampipes-archetype-pe-sinks-jvm/pom.xml
index d07320d..2fb3315 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/pom.xml b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/pom.xml
index 8825ee4..7417f66 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/pom.xml
@@ -12,52 +12,52 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-wrapper-standalone</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-json</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-cbor</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-smile</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-fst</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-jms</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>${sp.version}</version>
         </dependency>
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
index 2e958b2..dd6d27a 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/config/Config.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.config;
 
-import org.streampipes.config.SpConfig;
-import org.streampipes.container.model.PeConfig;
+import org.apache.streampipes.config.SpConfig;
+import org.apache.streampipes.container.model.PeConfig;
 
 import static ${package}.config.ConfigKeys.*;
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
index 2bb9bda..5f20961 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/main/Init.java
@@ -3,20 +3,20 @@
 #set( $symbol_escape = '\' )
 package ${package}.main;
 
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.standalone.init.StandaloneModelSubmitter;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.standalone.init.StandaloneModelSubmitter;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 import ${package}.config.Config;
 import ${package}.pe.sink.${packageName}.${classNamePrefix}Controller;
 
-import org.streampipes.dataformat.cbor.CborDataFormatFactory;
-import org.streampipes.dataformat.fst.FstDataFormatFactory;
-import org.streampipes.dataformat.json.JsonDataFormatFactory;
-import org.streampipes.dataformat.smile.SmileDataFormatFactory;
-import org.streampipes.messaging.jms.SpJmsProtocolFactory;
-import org.streampipes.messaging.kafka.SpKafkaProtocolFactory;
+import org.apache.streampipes.dataformat.cbor.CborDataFormatFactory;
+import org.apache.streampipes.dataformat.fst.FstDataFormatFactory;
+import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
+import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
+import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
+import org.apache.streampipes.messaging.kafka.SpKafkaProtocolFactory;
 
 public class Init extends StandaloneModelSubmitter {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__.java b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__.java
index 6f70327..bfcc992 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__.java
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__.java
@@ -4,9 +4,9 @@
 
 package ${package}.pe.sink.${packageName};
 
-import org.streampipes.model.runtime.Event;
-import org.streampipes.wrapper.context.EventSinkRuntimeContext;
-import org.streampipes.wrapper.runtime.EventSink;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.wrapper.context.EventSinkRuntimeContext;
+import org.apache.streampipes.wrapper.runtime.EventSink;
 
 import org.slf4j.Logger;
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
index 183772d..a84278e 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Controller.java
@@ -3,20 +3,20 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.sink.${packageName};
 
-import org.streampipes.model.DataSinkType;
-import org.streampipes.model.graph.DataSinkDescription;
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.sdk.builder.DataSinkBuilder;
-import org.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.streampipes.sdk.extractor.DataSinkParameterExtractor;
-import org.streampipes.sdk.helpers.EpRequirements;
-import org.streampipes.sdk.helpers.Labels;
-import org.streampipes.sdk.helpers.SupportedFormats;
-import org.streampipes.sdk.helpers.SupportedProtocols;
-import org.streampipes.wrapper.standalone.ConfiguredEventSink;
-import org.streampipes.wrapper.standalone.declarer.StandaloneEventSinkDeclarer;
-import org.streampipes.sdk.helpers.*;
-import org.streampipes.sdk.utils.Assets;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.extractor.DataSinkParameterExtractor;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.SupportedFormats;
+import org.apache.streampipes.sdk.helpers.SupportedProtocols;
+import org.apache.streampipes.wrapper.standalone.ConfiguredEventSink;
+import org.apache.streampipes.wrapper.standalone.declarer.StandaloneEventSinkDeclarer;
+import org.apache.streampipes.sdk.helpers.*;
+import org.apache.streampipes.sdk.utils.Assets;
 
 public class ${classNamePrefix}Controller extends StandaloneEventSinkDeclarer<${classNamePrefix}Parameters> {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
index 631a156..323467c 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/main/resources/archetype-resources/src/main/java/pe/sink/__packageName__/__classNamePrefix__Parameters.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.pe.sink.${packageName};
 
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.wrapper.params.binding.EventSinkBindingParams;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.wrapper.params.binding.EventSinkBindingParams;
 
 public class ${classNamePrefix}Parameters extends EventSinkBindingParams {
 
diff --git a/archetypes/streampipes-archetype-pe-sinks-jvm/src/test/resources/projects/basic/archetype.properties b/archetypes/streampipes-archetype-pe-sinks-jvm/src/test/resources/projects/basic/archetype.properties
index 4b42212..2c7da24 100644
--- a/archetypes/streampipes-archetype-pe-sinks-jvm/src/test/resources/projects/basic/archetype.properties
+++ b/archetypes/streampipes-archetype-pe-sinks-jvm/src/test/resources/projects/basic/archetype.properties
@@ -17,7 +17,7 @@
 #
 
 #Tue Nov 21 10:33:48 CET 2017
-package=org.streampipes.test
+package=org.apache.streampipes.test
 version=0.1-SNAPSHOT
 groupId=test-pe
 artifactId=basic
diff --git a/archetypes/streampipes-archetype-pe-sources/README.md b/archetypes/streampipes-archetype-pe-sources/README.md
index 5dcda0a..b36eb1d 100644
--- a/archetypes/streampipes-archetype-pe-sources/README.md
+++ b/archetypes/streampipes-archetype-pe-sources/README.md
@@ -21,7 +21,7 @@
 ### Usage
 
 mvn archetype:generate                                  \
-			-DarchetypeGroupId=org.streampipes                \
+			-DarchetypeGroupId=org.apache.streampipes                \
 			-DarchetypeArtifactId=streampipes-archetype-pe-sources         \
 			-DarchetypeVersion=0.60.2-SNAPSHOT                \
 			-DgroupId=my.groupId \
diff --git a/archetypes/streampipes-archetype-pe-sources/pom.xml b/archetypes/streampipes-archetype-pe-sources/pom.xml
index 18e3a41..1a5be08 100644
--- a/archetypes/streampipes-archetype-pe-sources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sources/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
         <relativePath>../../pom.xml</relativePath>
diff --git a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/pom.xml b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/pom.xml
index 6b8f776..bc1f3bf 100644
--- a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/pom.xml
+++ b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/pom.xml
@@ -12,7 +12,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>${sp.version}</version>
             <exclusions>
@@ -32,7 +32,7 @@
             <version>1.9.2</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>${sp.version}</version>
         </dependency>
@@ -47,27 +47,27 @@
             <version>1.7.24</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-dataformat-json</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-jms</artifactId>
             <version>${sp.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sources</artifactId>
             <version>${sp.version}</version>
         </dependency>
diff --git a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/config/Config.java b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/config/Config.java
index 314e749..c1a4545 100644
--- a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/config/Config.java
+++ b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/config/Config.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.config;
 
-import org.streampipes.config.SpConfig;
-import org.streampipes.container.model.PeConfig;
+import org.apache.streampipes.config.SpConfig;
+import org.apache.streampipes.container.model.PeConfig;
 
 public enum Config implements PeConfig {
 
diff --git a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/main/Init.java b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/main/Init.java
index dea3cdb..9788b0b 100644
--- a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/main/Init.java
+++ b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/main/Init.java
@@ -3,8 +3,8 @@
 #set( $symbol_escape = '\' )
 package ${package}.main;
 
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.standalone.init.StandaloneModelSubmitter;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.standalone.init.StandaloneModelSubmitter;
 import ${package}.config.Config;
 import ${package}.pe.${packageName}.DataSource;
 
diff --git a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/DataSource.java b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/DataSource.java
index f487e24..128ab12 100644
--- a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/DataSource.java
+++ b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/DataSource.java
@@ -1,10 +1,10 @@
 
 package ${package}.pe.${packageName};
 
-import org.streampipes.container.declarer.DataStreamDeclarer;
-import org.streampipes.container.declarer.SemanticEventProducerDeclarer;
-import org.streampipes.model.graph.DataSourceDescription;
-import org.streampipes.sdk.builder.DataSourceBuilder;
+import org.apache.streampipes.container.declarer.DataStreamDeclarer;
+import org.apache.streampipes.container.declarer.SemanticEventProducerDeclarer;
+import org.apache.streampipes.model.graph.DataSourceDescription;
+import org.apache.streampipes.sdk.builder.DataSourceBuilder;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/__classNamePrefix__Stream.java b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/__classNamePrefix__Stream.java
index 7933337..23b789f 100644
--- a/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/__classNamePrefix__Stream.java
+++ b/archetypes/streampipes-archetype-pe-sources/src/main/resources/archetype-resources/src/main/java/pe/__packageName__/__classNamePrefix__Stream.java
@@ -4,13 +4,13 @@
 
 package ${package}.pe.${packageName};
 
-import org.streampipes.model.SpDataStream;
-import org.streampipes.model.graph.DataSourceDescription;
-import org.streampipes.sdk.builder.DataStreamBuilder;
-import org.streampipes.sdk.helpers.EpProperties;
-import org.streampipes.sdk.helpers.Formats;
-import org.streampipes.sdk.helpers.Protocols;
-import org.streampipes.sources.AbstractAdapterIncludedStream;
+import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.graph.DataSourceDescription;
+import org.apache.streampipes.sdk.builder.DataStreamBuilder;
+import org.apache.streampipes.sdk.helpers.EpProperties;
+import org.apache.streampipes.sdk.helpers.Formats;
+import org.apache.streampipes.sdk.helpers.Protocols;
+import org.apache.streampipes.sources.AbstractAdapterIncludedStream;
 
 
 public class ${classNamePrefix}Stream extends AbstractAdapterIncludedStream {
diff --git a/pom.xml b/pom.xml
index 3102be8..16f63fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.streampipes</groupId>
+    <groupId>org.apache.streampipes</groupId>
     <artifactId>streampipes-parent</artifactId>
     <version>0.65.1-SNAPSHOT</version>
     <packaging>pom</packaging>
diff --git a/streampipes-app-file-export/pom.xml b/streampipes-app-file-export/pom.xml
index ab24f44..279f596 100644
--- a/streampipes-app-file-export/pom.xml
+++ b/streampipes-app-file-export/pom.xml
@@ -21,7 +21,7 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <artifactId>streampipes-parent</artifactId>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <version>0.65.1-SNAPSHOT</version>
     </parent>
 
@@ -32,7 +32,7 @@
     <dependencies>
         <!-- StreamPipes dependencies -->
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-storage-couchdb</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchAppData.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchAppData.java
new file mode 100644
index 0000000..794f50b
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchAppData.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.app.file.export;
+
+public class ElasticsearchAppData {
+
+    private String index;
+
+    private long timestampFrom;
+
+    private long timestampTo;
+
+    private String output;
+
+    private boolean allData;
+
+    public ElasticsearchAppData() {
+    }
+
+    public ElasticsearchAppData(String index, long timestampFrom, long timeStampTo, String output, boolean allData) {
+        this.index = index;
+        this.timestampFrom = timestampFrom;
+        this.timestampTo = timeStampTo;
+        this.output = output;
+        this.allData = allData;
+    }
+
+    public String getIndex() {
+        return index;
+    }
+
+    public void setIndex(String index) {
+        this.index = index;
+    }
+
+    public long getTimestampFrom() {
+        return timestampFrom;
+    }
+
+    public void setTimestampFrom(long timestampFrom) {
+        this.timestampFrom = timestampFrom;
+    }
+
+    public long getTimestampTo() {
+        return timestampTo;
+    }
+
+    public void setTimeStampTo(long timestampTo) {
+        this.timestampTo = timestampTo;
+    }
+
+    public String getOutput() {
+        return output;
+    }
+
+    public void setOutput(String output) {
+        this.output = output;
+    }
+
+    public boolean isAllData() {
+        return allData;
+    }
+
+    public void setAllData(boolean allData) {
+        this.allData = allData;
+    }
+}
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchConfig.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchConfig.java
new file mode 100644
index 0000000..0460e18
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/ElasticsearchConfig.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.app.file.export;
+
+import org.apache.streampipes.config.SpConfig;
+
+public enum ElasticsearchConfig {
+    INSTANCE;
+
+    private SpConfig config;
+    private final static String HOST = "host";
+    private final static String PORT = "port";
+    private final static String PROTOCOL = "protocol";
+    private final static String DATA_LOCATION = "data_location";
+
+    ElasticsearchConfig() {
+        config = SpConfig.getSpConfig("storage/elasticsearch");
+
+        config.register(HOST, "elasticsearch", "Hostname for the elasticsearch service");
+        config.register(PORT, 9200, "Port for the elasticsearch service");
+        config.register(PROTOCOL, "http", "Protocol the elasticsearch service");
+        config.register(DATA_LOCATION,"/home/user/", "Folder that stores all the created data blobs");
+    }
+
+    public String getElasticsearchHost() {
+        return config.getString(HOST);
+    }
+
+    public Integer getElasticsearchPort() {
+        return config.getInteger(PORT);
+    }
+
+    public String getElasticsearchURL() {
+        return getElasticsearchProtocol()+ "://" + getElasticsearchHost() + ":" + getElasticsearchPort();
+    }
+
+    public String getElasticsearchProtocol() {
+        return config.getString(PROTOCOL);
+    }
+
+    public String getDataLocation() {
+        return config.getString(DATA_LOCATION);
+    }
+}
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/api/IElasticsearch.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/api/IElasticsearch.java
new file mode 100644
index 0000000..c61f670
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/api/IElasticsearch.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.app.file.export.api;
+
+import org.apache.streampipes.app.file.export.ElasticsearchAppData;
+
+import javax.ws.rs.core.Response;
+
+public interface IElasticsearch {
+
+    Response createFiles(ElasticsearchAppData data);
+
+    Response getFile(String fileName);
+
+    Response deleteFile(String fileName);
+
+    Response getEndpoints();
+
+
+}
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/application/AppFileExportApplication.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/application/AppFileExportApplication.java
new file mode 100644
index 0000000..3168892
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/application/AppFileExportApplication.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.app.file.export.application;
+
+import org.glassfish.jersey.server.ResourceConfig;
+import org.apache.streampipes.app.file.export.impl.Elasticsearch;
+
+
+public class AppFileExportApplication extends ResourceConfig {
+
+  public AppFileExportApplication() {
+    register(Elasticsearch.class);
+  }
+}
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/converter/JsonConverter.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/converter/JsonConverter.java
new file mode 100644
index 0000000..5909d42
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/converter/JsonConverter.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.app.file.export.converter;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.StringJoiner;
+
+public class JsonConverter {
+
+  private JsonObject elasticJsonRepresentation;
+  private JsonParser jsonParser;
+
+  public JsonConverter() {
+    this.jsonParser = new JsonParser();
+  }
+
+  public String getCsvHeader(String elasticJsonRepresentation) {
+    JsonObject inContent = jsonParser.parse(elasticJsonRepresentation).getAsJsonObject();
+
+    Set<Map.Entry<String, JsonElement>> elements = inContent.entrySet();
+    StringJoiner sj = new StringJoiner(";");
+
+    for (Map.Entry<String, JsonElement> entry : elements) {
+      sj.add(entry.getKey().toString());
+    }
+
+    return sj.toString() + "\n";
+
+  }
+
+  public String convertToCsv(String elasticJsonRepresentation) {
+    JsonObject inContent = jsonParser.parse(elasticJsonRepresentation).getAsJsonObject();
+
+    Set<Map.Entry<String, JsonElement>> elements = inContent.entrySet();
+    StringJoiner sj = new StringJoiner(";");
+
+    for (Map.Entry<String, JsonElement> entry : elements) {
+      sj.add(entry.getValue().toString());
+    }
+
+    return sj.toString() + "\n";
+
+  }
+
+}
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/impl/Elasticsearch.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/impl/Elasticsearch.java
new file mode 100644
index 0000000..c3fb684
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/impl/Elasticsearch.java
@@ -0,0 +1,320 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.app.file.export.impl;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.apache.http.HttpHost;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.fluent.Request;
+import org.elasticsearch.action.search.ClearScrollRequest;
+import org.elasticsearch.action.search.ClearScrollResponse;
+import org.elasticsearch.action.search.SearchRequest;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.action.search.SearchScrollRequest;
+import org.elasticsearch.client.RequestOptions;
+import org.elasticsearch.client.RestClient;
+import org.elasticsearch.client.RestClientBuilder;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.elasticsearch.common.unit.TimeValue;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.Scroll;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.lightcouch.CouchDbClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.streampipes.app.file.export.ElasticsearchAppData;
+import org.apache.streampipes.app.file.export.ElasticsearchConfig;
+import org.apache.streampipes.app.file.export.api.IElasticsearch;
+import org.apache.streampipes.app.file.export.converter.JsonConverter;
+import org.apache.streampipes.app.file.export.model.IndexInfo;
+import org.apache.streampipes.storage.couchdb.utils.Utils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+@Path("/v1/elasticsearch")
+public class Elasticsearch implements IElasticsearch {
+
+  private static String mainFilePath = ElasticsearchConfig.INSTANCE.getDataLocation();
+  private static final List<String> excludedIndices = Collections.singletonList(".kibana");
+
+  Logger LOG = LoggerFactory.getLogger(Elasticsearch.class);
+
+  @POST
+  @Produces(MediaType.APPLICATION_JSON)
+  @Consumes(MediaType.APPLICATION_JSON)
+  @Path("/file")
+  @Override
+  public Response createFiles(ElasticsearchAppData data) {
+    String index = data.getIndex();
+    long timestampFrom = data.getTimestampFrom();
+    long timeStampTo = data.getTimestampTo();
+    String output = data.getOutput();
+    boolean allData = data.isAllData();
+
+    try {
+      RestHighLevelClient client = getRestHighLevelClient();
+
+      final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
+      SearchRequest searchRequest = new SearchRequest(index);
+      searchRequest.scroll(scroll);
+      SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+
+      if (!allData) {
+        searchSourceBuilder.query(QueryBuilders.rangeQuery("timestamp").from(timestampFrom).to(timeStampTo));
+      }
+
+      searchRequest.source(searchSourceBuilder);
+      SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
+      String scrollId = searchResponse.getScrollId();
+      SearchHit[] searchHits = searchResponse.getHits().getHits();
+
+      //Time created in milli sec, index, from, to
+      long timestamp = System.currentTimeMillis();
+      String fileName = System.currentTimeMillis() + "-" + index + "-" + timestampFrom + "-" + timeStampTo + "." + output;
+      String filePath = mainFilePath + fileName;
+      FileOutputStream fileStream = this.getFileStream(filePath);
+
+      if(("csv").equals(output)) {
+       processCSV(client, fileStream, scrollId, scroll, searchHits);
+      } else {
+        processJSON(client, fileStream, scrollId, scroll, searchHits);
+      }
+
+      fileStream.close();
+
+      CouchDbClient couchDbClient = getCouchDbClient();
+      Map<String, Object> map = new HashMap<>();
+      map.put("_id", fileName);
+      map.put("fileName", fileName);
+      map.put("filePath", filePath);
+      map.put("createAt", timestamp);
+      map.put("from", timestampFrom);
+      map.put("to", timeStampTo);
+      couchDbClient.save(map);
+
+      LOG.info("Created file: " + fileName);
+
+      return Response.ok().build();
+
+    } catch (IOException e) {
+      e.printStackTrace();
+      LOG.error(e.getMessage());
+      return Response.status(500).entity(e).build();
+    }
+  }
+
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/file/{fileName}")
+  public Response getFile(@PathParam("fileName") String fileName) {
+    File file = new File(mainFilePath + fileName);
+    if (file.exists()) {
+      LOG.info("Downloaded file: " + fileName);
+      return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
+              .header("Content-Disposition", "attachment; filename=\"" + fileName + "\"")
+              .build();
+    } else {
+      LOG.info("Download - File not found");
+      return Response.status(404).entity("File not found").build();
+    }
+  }
+
+  @GET
+  @Produces(MediaType.APPLICATION_JSON)
+  @Path("/indices")
+  public Response getIndices() {
+    String url = ElasticsearchConfig.INSTANCE.getElasticsearchURL() + "/_cat/indices?v";
+    try {
+      JsonElement jsonResponse = get(url);
+
+      JsonArray response = jsonResponse.getAsJsonArray();
+      List<IndexInfo> availableIndices = new ArrayList<>();
+      for(int i = 0; i < response.size(); i++) {
+       JsonObject object = response.get(i).getAsJsonObject();
+       String index = object.get("index").getAsString();
+       if (!shouldExclude(index)) {
+         Integer documentCount = Integer.parseInt(object.get("docs.count").getAsString());
+          availableIndices.add(new IndexInfo(index, documentCount));
+       }
+      }
+      return Response.ok(availableIndices).build();
+    } catch (IOException e) {
+      e.printStackTrace();
+      return Response.serverError().build();
+    }
+  }
+
+  private boolean shouldExclude(String index) {
+    return excludedIndices.stream().anyMatch(i -> i.equals(index));
+  }
+
+  @DELETE
+  @Path("/file/{fileName}")
+  @Override
+  public Response deleteFile(@PathParam("fileName") String fileName) {
+    CouchDbClient couchDbClient = getCouchDbClient();
+    JsonObject found = couchDbClient.find(JsonObject.class, fileName);
+    couchDbClient.remove(found.get("_id").getAsString(), found.get("_rev").getAsString());
+    File file = new File(mainFilePath + fileName);
+    file.delete();
+    LOG.info("Deleted: " + fileName);
+
+    return Response.ok().build();
+  }
+
+  @GET
+  @Path("/files")
+  @Override
+  public Response getEndpoints() {
+    CouchDbClient couchDbClient = getCouchDbClient();
+    List<JsonObject> endpoints = couchDbClient.view("_all_docs").includeDocs(true).query(JsonObject.class);
+    String json = new Gson().toJson(endpoints);
+
+    return Response.ok(json).build();
+  }
+
+  private CouchDbClient getCouchDbClient() {
+    return Utils.getCouchDbElasticsearchFilesEndppointClient();
+  }
+
+  private FileOutputStream getFileStream(String filePath) throws IOException {
+    File file = new File(filePath);
+    file.getParentFile().mkdirs();
+    return new FileOutputStream(filePath);
+  }
+
+  private JsonElement get(String url) throws IOException {
+    String jsonResponse = Request.Get(url)
+            .addHeader("accept", "application/json")
+            .addHeader("Content-Type", "application/json")
+            .execute()
+            .returnContent().asString();
+    return new JsonParser().parse(jsonResponse);
+  }
+
+  private RestHighLevelClient getRestHighLevelClient() {
+    String host = ElasticsearchConfig.INSTANCE.getElasticsearchHost();
+    int port = ElasticsearchConfig.INSTANCE.getElasticsearchPort();
+
+    return new RestHighLevelClient(
+            RestClient.builder(
+                    new HttpHost(host, port, "http"))
+                      .setRequestConfigCallback(
+                              new RestClientBuilder.RequestConfigCallback() {
+                                @Override
+                                public RequestConfig.Builder customizeRequestConfig(
+                                        RequestConfig.Builder requestConfigBuilder) {
+                                  return requestConfigBuilder
+                                          .setConnectTimeout(5000)
+                                          .setSocketTimeout(60000);
+                                }
+                              })
+    );
+
+  }
+
+  private void processJSON(RestHighLevelClient client, FileOutputStream fileStream, String scrollId,  Scroll scroll,  SearchHit[] searchHits) throws IOException {
+      fileStream.write("[".getBytes());
+      boolean isFirstElement = true;
+      for (SearchHit hit : searchHits) {
+        if(!isFirstElement)
+          fileStream.write(",".getBytes());
+        fileStream.write(hit.getSourceAsString().getBytes());
+        isFirstElement = false;
+      }
+
+    while (searchHits != null && searchHits.length > 0) {
+
+      SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
+      scrollRequest.scroll(scroll);
+      SearchResponse searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
+      scrollId = searchResponse.getScrollId();
+      searchHits = searchResponse.getHits().getHits();
+      for (SearchHit hit : searchHits) {
+        fileStream.write(",".getBytes());
+        fileStream.write(hit.getSourceAsString().getBytes());
+      }
+    }
+    fileStream.write("]".getBytes());
+
+    ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
+    clearScrollRequest.addScrollId(scrollId);
+    ClearScrollResponse clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
+
+
+  }
+
+  private void processCSV(RestHighLevelClient client, FileOutputStream fileStream, String scrollId,  Scroll scroll,
+                          SearchHit[] searchHits) throws IOException {
+    JsonConverter jsonConverter = new JsonConverter();
+
+    boolean isFirstElement = true;
+    for (SearchHit hit : searchHits) {
+      if (isFirstElement)
+        fileStream.write(jsonConverter.getCsvHeader(hit.getSourceAsString()).getBytes());
+      String response = jsonConverter.convertToCsv(hit.getSourceAsString());
+      fileStream.write(response.getBytes());
+      isFirstElement = false;
+
+    }
+
+    while (searchHits != null && searchHits.length > 0) {
+
+      SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
+      scrollRequest.scroll(scroll);
+      SearchResponse searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
+      scrollId = searchResponse.getScrollId();
+      searchHits = searchResponse.getHits().getHits();
+      for (SearchHit hit : searchHits) {
+        fileStream.write(jsonConverter.convertToCsv(hit.getSourceAsString()).getBytes());
+      }
+
+    }
+
+    ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
+    clearScrollRequest.addScrollId(scrollId);
+    ClearScrollResponse clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
+
+  }
+
+
+
+  }
diff --git a/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/model/IndexInfo.java b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/model/IndexInfo.java
new file mode 100644
index 0000000..b23e82b
--- /dev/null
+++ b/streampipes-app-file-export/src/main/java/org/apache/streampipes/app/file/export/model/IndexInfo.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.app.file.export.model;
+
+public class IndexInfo {
+
+  private String indexName;
+  private Integer documentCount;
+
+  public IndexInfo(String indexName, Integer documentCount) {
+    this.indexName = indexName;
+    this.documentCount = documentCount;
+  }
+
+  public String getIndexName() {
+    return indexName;
+  }
+
+  public void setIndexName(String indexName) {
+    this.indexName = indexName;
+  }
+
+  public Integer getDocumentCount() {
+    return documentCount;
+  }
+
+  public void setDocumentCount(Integer documentCount) {
+    this.documentCount = documentCount;
+  }
+}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchAppData.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchAppData.java
deleted file mode 100644
index 2171971..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchAppData.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.app.file.export;
-
-public class ElasticsearchAppData {
-
-    private String index;
-
-    private long timestampFrom;
-
-    private long timestampTo;
-
-    private String output;
-
-    private boolean allData;
-
-    public ElasticsearchAppData() {
-    }
-
-    public ElasticsearchAppData(String index, long timestampFrom, long timeStampTo, String output, boolean allData) {
-        this.index = index;
-        this.timestampFrom = timestampFrom;
-        this.timestampTo = timeStampTo;
-        this.output = output;
-        this.allData = allData;
-    }
-
-    public String getIndex() {
-        return index;
-    }
-
-    public void setIndex(String index) {
-        this.index = index;
-    }
-
-    public long getTimestampFrom() {
-        return timestampFrom;
-    }
-
-    public void setTimestampFrom(long timestampFrom) {
-        this.timestampFrom = timestampFrom;
-    }
-
-    public long getTimestampTo() {
-        return timestampTo;
-    }
-
-    public void setTimeStampTo(long timestampTo) {
-        this.timestampTo = timestampTo;
-    }
-
-    public String getOutput() {
-        return output;
-    }
-
-    public void setOutput(String output) {
-        this.output = output;
-    }
-
-    public boolean isAllData() {
-        return allData;
-    }
-
-    public void setAllData(boolean allData) {
-        this.allData = allData;
-    }
-}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchConfig.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchConfig.java
deleted file mode 100644
index c5fc8b6..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/ElasticsearchConfig.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.app.file.export;
-
-import org.streampipes.config.SpConfig;
-
-public enum ElasticsearchConfig {
-    INSTANCE;
-
-    private SpConfig config;
-    private final static String HOST = "host";
-    private final static String PORT = "port";
-    private final static String PROTOCOL = "protocol";
-    private final static String DATA_LOCATION = "data_location";
-
-    ElasticsearchConfig() {
-        config = SpConfig.getSpConfig("storage/elasticsearch");
-
-        config.register(HOST, "elasticsearch", "Hostname for the elasticsearch service");
-        config.register(PORT, 9200, "Port for the elasticsearch service");
-        config.register(PROTOCOL, "http", "Protocol the elasticsearch service");
-        config.register(DATA_LOCATION,"/home/user/", "Folder that stores all the created data blobs");
-    }
-
-    public String getElasticsearchHost() {
-        return config.getString(HOST);
-    }
-
-    public Integer getElasticsearchPort() {
-        return config.getInteger(PORT);
-    }
-
-    public String getElasticsearchURL() {
-        return getElasticsearchProtocol()+ "://" + getElasticsearchHost() + ":" + getElasticsearchPort();
-    }
-
-    public String getElasticsearchProtocol() {
-        return config.getString(PROTOCOL);
-    }
-
-    public String getDataLocation() {
-        return config.getString(DATA_LOCATION);
-    }
-}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/api/IElasticsearch.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/api/IElasticsearch.java
deleted file mode 100644
index 9968c76..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/api/IElasticsearch.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.app.file.export.api;
-
-import org.streampipes.app.file.export.ElasticsearchAppData;
-
-import javax.ws.rs.core.Response;
-
-public interface IElasticsearch {
-
-    Response createFiles(ElasticsearchAppData data);
-
-    Response getFile(String fileName);
-
-    Response deleteFile(String fileName);
-
-    Response getEndpoints();
-
-
-}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/application/AppFileExportApplication.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/application/AppFileExportApplication.java
deleted file mode 100644
index 85ebeff..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/application/AppFileExportApplication.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.app.file.export.application;
-
-import org.glassfish.jersey.server.ResourceConfig;
-import org.streampipes.app.file.export.impl.Elasticsearch;
-
-
-public class AppFileExportApplication extends ResourceConfig {
-
-  public AppFileExportApplication() {
-    register(Elasticsearch.class);
-  }
-}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/converter/JsonConverter.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/converter/JsonConverter.java
deleted file mode 100644
index f710590..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/converter/JsonConverter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.app.file.export.converter;
-
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.StringJoiner;
-
-public class JsonConverter {
-
-  private JsonObject elasticJsonRepresentation;
-  private JsonParser jsonParser;
-
-  public JsonConverter() {
-    this.jsonParser = new JsonParser();
-  }
-
-  public String getCsvHeader(String elasticJsonRepresentation) {
-    JsonObject inContent = jsonParser.parse(elasticJsonRepresentation).getAsJsonObject();
-
-    Set<Map.Entry<String, JsonElement>> elements = inContent.entrySet();
-    StringJoiner sj = new StringJoiner(";");
-
-    for (Map.Entry<String, JsonElement> entry : elements) {
-      sj.add(entry.getKey().toString());
-    }
-
-    return sj.toString() + "\n";
-
-  }
-
-  public String convertToCsv(String elasticJsonRepresentation) {
-    JsonObject inContent = jsonParser.parse(elasticJsonRepresentation).getAsJsonObject();
-
-    Set<Map.Entry<String, JsonElement>> elements = inContent.entrySet();
-    StringJoiner sj = new StringJoiner(";");
-
-    for (Map.Entry<String, JsonElement> entry : elements) {
-      sj.add(entry.getValue().toString());
-    }
-
-    return sj.toString() + "\n";
-
-  }
-
-}
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/impl/Elasticsearch.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/impl/Elasticsearch.java
deleted file mode 100644
index f892f12..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/impl/Elasticsearch.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.app.file.export.impl;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import org.apache.http.HttpHost;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.fluent.Request;
-import org.elasticsearch.action.search.ClearScrollRequest;
-import org.elasticsearch.action.search.ClearScrollResponse;
-import org.elasticsearch.action.search.SearchRequest;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchScrollRequest;
-import org.elasticsearch.client.RequestOptions;
-import org.elasticsearch.client.RestClient;
-import org.elasticsearch.client.RestClientBuilder;
-import org.elasticsearch.client.RestHighLevelClient;
-import org.elasticsearch.common.unit.TimeValue;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.Scroll;
-import org.elasticsearch.search.SearchHit;
-import org.elasticsearch.search.builder.SearchSourceBuilder;
-import org.lightcouch.CouchDbClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.streampipes.app.file.export.ElasticsearchAppData;
-import org.streampipes.app.file.export.ElasticsearchConfig;
-import org.streampipes.app.file.export.api.IElasticsearch;
-import org.streampipes.app.file.export.converter.JsonConverter;
-import org.streampipes.app.file.export.model.IndexInfo;
-import org.streampipes.storage.couchdb.utils.Utils;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-@Path("/v1/elasticsearch")
-public class Elasticsearch implements IElasticsearch {
-
-  private static String mainFilePath = ElasticsearchConfig.INSTANCE.getDataLocation();
-  private static final List<String> excludedIndices = Collections.singletonList(".kibana");
-
-  Logger LOG = LoggerFactory.getLogger(Elasticsearch.class);
-
-  @POST
-  @Produces(MediaType.APPLICATION_JSON)
-  @Consumes(MediaType.APPLICATION_JSON)
-  @Path("/file")
-  @Override
-  public Response createFiles(ElasticsearchAppData data) {
-    String index = data.getIndex();
-    long timestampFrom = data.getTimestampFrom();
-    long timeStampTo = data.getTimestampTo();
-    String output = data.getOutput();
-    boolean allData = data.isAllData();
-
-    try {
-      RestHighLevelClient client = getRestHighLevelClient();
-
-      final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L));
-      SearchRequest searchRequest = new SearchRequest(index);
-      searchRequest.scroll(scroll);
-      SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-
-      if (!allData) {
-        searchSourceBuilder.query(QueryBuilders.rangeQuery("timestamp").from(timestampFrom).to(timeStampTo));
-      }
-
-      searchRequest.source(searchSourceBuilder);
-      SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
-      String scrollId = searchResponse.getScrollId();
-      SearchHit[] searchHits = searchResponse.getHits().getHits();
-
-      //Time created in milli sec, index, from, to
-      long timestamp = System.currentTimeMillis();
-      String fileName = System.currentTimeMillis() + "-" + index + "-" + timestampFrom + "-" + timeStampTo + "." + output;
-      String filePath = mainFilePath + fileName;
-      FileOutputStream fileStream = this.getFileStream(filePath);
-
-      if(("csv").equals(output)) {
-       processCSV(client, fileStream, scrollId, scroll, searchHits);
-      } else {
-        processJSON(client, fileStream, scrollId, scroll, searchHits);
-      }
-
-      fileStream.close();
-
-      CouchDbClient couchDbClient = getCouchDbClient();
-      Map<String, Object> map = new HashMap<>();
-      map.put("_id", fileName);
-      map.put("fileName", fileName);
-      map.put("filePath", filePath);
-      map.put("createAt", timestamp);
-      map.put("from", timestampFrom);
-      map.put("to", timeStampTo);
-      couchDbClient.save(map);
-
-      LOG.info("Created file: " + fileName);
-
-      return Response.ok().build();
-
-    } catch (IOException e) {
-      e.printStackTrace();
-      LOG.error(e.getMessage());
-      return Response.status(500).entity(e).build();
-    }
-  }
-
-  @GET
-  @Produces(MediaType.APPLICATION_JSON)
-  @Path("/file/{fileName}")
-  public Response getFile(@PathParam("fileName") String fileName) {
-    File file = new File(mainFilePath + fileName);
-    if (file.exists()) {
-      LOG.info("Downloaded file: " + fileName);
-      return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
-              .header("Content-Disposition", "attachment; filename=\"" + fileName + "\"")
-              .build();
-    } else {
-      LOG.info("Download - File not found");
-      return Response.status(404).entity("File not found").build();
-    }
-  }
-
-  @GET
-  @Produces(MediaType.APPLICATION_JSON)
-  @Path("/indices")
-  public Response getIndices() {
-    String url = ElasticsearchConfig.INSTANCE.getElasticsearchURL() + "/_cat/indices?v";
-    try {
-      JsonElement jsonResponse = get(url);
-
-      JsonArray response = jsonResponse.getAsJsonArray();
-      List<IndexInfo> availableIndices = new ArrayList<>();
-      for(int i = 0; i < response.size(); i++) {
-       JsonObject object = response.get(i).getAsJsonObject();
-       String index = object.get("index").getAsString();
-       if (!shouldExclude(index)) {
-         Integer documentCount = Integer.parseInt(object.get("docs.count").getAsString());
-          availableIndices.add(new IndexInfo(index, documentCount));
-       }
-      }
-      return Response.ok(availableIndices).build();
-    } catch (IOException e) {
-      e.printStackTrace();
-      return Response.serverError().build();
-    }
-  }
-
-  private boolean shouldExclude(String index) {
-    return excludedIndices.stream().anyMatch(i -> i.equals(index));
-  }
-
-  @DELETE
-  @Path("/file/{fileName}")
-  @Override
-  public Response deleteFile(@PathParam("fileName") String fileName) {
-    CouchDbClient couchDbClient = getCouchDbClient();
-    JsonObject found = couchDbClient.find(JsonObject.class, fileName);
-    couchDbClient.remove(found.get("_id").getAsString(), found.get("_rev").getAsString());
-    File file = new File(mainFilePath + fileName);
-    file.delete();
-    LOG.info("Deleted: " + fileName);
-
-    return Response.ok().build();
-  }
-
-  @GET
-  @Path("/files")
-  @Override
-  public Response getEndpoints() {
-    CouchDbClient couchDbClient = getCouchDbClient();
-    List<JsonObject> endpoints = couchDbClient.view("_all_docs").includeDocs(true).query(JsonObject.class);
-    String json = new Gson().toJson(endpoints);
-
-    return Response.ok(json).build();
-  }
-
-  private CouchDbClient getCouchDbClient() {
-    return Utils.getCouchDbElasticsearchFilesEndppointClient();
-  }
-
-  private FileOutputStream getFileStream(String filePath) throws IOException {
-    File file = new File(filePath);
-    file.getParentFile().mkdirs();
-    return new FileOutputStream(filePath);
-  }
-
-  private JsonElement get(String url) throws IOException {
-    String jsonResponse = Request.Get(url)
-            .addHeader("accept", "application/json")
-            .addHeader("Content-Type", "application/json")
-            .execute()
-            .returnContent().asString();
-    return new JsonParser().parse(jsonResponse);
-  }
-
-  private RestHighLevelClient getRestHighLevelClient() {
-    String host = ElasticsearchConfig.INSTANCE.getElasticsearchHost();
-    int port = ElasticsearchConfig.INSTANCE.getElasticsearchPort();
-
-    return new RestHighLevelClient(
-            RestClient.builder(
-                    new HttpHost(host, port, "http"))
-                      .setRequestConfigCallback(
-                              new RestClientBuilder.RequestConfigCallback() {
-                                @Override
-                                public RequestConfig.Builder customizeRequestConfig(
-                                        RequestConfig.Builder requestConfigBuilder) {
-                                  return requestConfigBuilder
-                                          .setConnectTimeout(5000)
-                                          .setSocketTimeout(60000);
-                                }
-                              })
-    );
-
-  }
-
-  private void processJSON(RestHighLevelClient client, FileOutputStream fileStream, String scrollId,  Scroll scroll,  SearchHit[] searchHits) throws IOException {
-      fileStream.write("[".getBytes());
-      boolean isFirstElement = true;
-      for (SearchHit hit : searchHits) {
-        if(!isFirstElement)
-          fileStream.write(",".getBytes());
-        fileStream.write(hit.getSourceAsString().getBytes());
-        isFirstElement = false;
-      }
-
-    while (searchHits != null && searchHits.length > 0) {
-
-      SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
-      scrollRequest.scroll(scroll);
-      SearchResponse searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
-      scrollId = searchResponse.getScrollId();
-      searchHits = searchResponse.getHits().getHits();
-      for (SearchHit hit : searchHits) {
-        fileStream.write(",".getBytes());
-        fileStream.write(hit.getSourceAsString().getBytes());
-      }
-    }
-    fileStream.write("]".getBytes());
-
-    ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
-    clearScrollRequest.addScrollId(scrollId);
-    ClearScrollResponse clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
-
-
-  }
-
-  private void processCSV(RestHighLevelClient client, FileOutputStream fileStream, String scrollId,  Scroll scroll,
-                          SearchHit[] searchHits) throws IOException {
-    JsonConverter jsonConverter = new JsonConverter();
-
-    boolean isFirstElement = true;
-    for (SearchHit hit : searchHits) {
-      if (isFirstElement)
-        fileStream.write(jsonConverter.getCsvHeader(hit.getSourceAsString()).getBytes());
-      String response = jsonConverter.convertToCsv(hit.getSourceAsString());
-      fileStream.write(response.getBytes());
-      isFirstElement = false;
-
-    }
-
-    while (searchHits != null && searchHits.length > 0) {
-
-      SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId);
-      scrollRequest.scroll(scroll);
-      SearchResponse searchResponse = client.scroll(scrollRequest, RequestOptions.DEFAULT);
-      scrollId = searchResponse.getScrollId();
-      searchHits = searchResponse.getHits().getHits();
-      for (SearchHit hit : searchHits) {
-        fileStream.write(jsonConverter.convertToCsv(hit.getSourceAsString()).getBytes());
-      }
-
-    }
-
-    ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
-    clearScrollRequest.addScrollId(scrollId);
-    ClearScrollResponse clearScrollResponse = client.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
-
-  }
-
-
-
-  }
diff --git a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/model/IndexInfo.java b/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/model/IndexInfo.java
deleted file mode 100644
index 0973af9..0000000
--- a/streampipes-app-file-export/src/main/java/org/streampipes/app/file/export/model/IndexInfo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.app.file.export.model;
-
-public class IndexInfo {
-
-  private String indexName;
-  private Integer documentCount;
-
-  public IndexInfo(String indexName, Integer documentCount) {
-    this.indexName = indexName;
-    this.documentCount = documentCount;
-  }
-
-  public String getIndexName() {
-    return indexName;
-  }
-
-  public void setIndexName(String indexName) {
-    this.indexName = indexName;
-  }
-
-  public Integer getDocumentCount() {
-    return documentCount;
-  }
-
-  public void setDocumentCount(Integer documentCount) {
-    this.documentCount = documentCount;
-  }
-}
diff --git a/streampipes-backend/pom.xml b/streampipes-backend/pom.xml
index 6fb447f..de2f475 100644
--- a/streampipes-backend/pom.xml
+++ b/streampipes-backend/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
     </parent>
@@ -31,12 +31,12 @@
     <dependencies>
         <!-- StreamPipes dependencies -->
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-app-file-export</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-base</artifactId>
             <version>0.65.1-SNAPSHOT</version>
             <exclusions>
@@ -47,17 +47,17 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-config</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-messaging-kafka</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-rest</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
diff --git a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java
new file mode 100644
index 0000000..1907e9d
--- /dev/null
+++ b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesBackendApplication.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.backend;
+
+import org.apache.shiro.web.env.EnvironmentLoaderListener;
+import org.apache.shiro.web.servlet.OncePerRequestFilter;
+import org.apache.shiro.web.servlet.ShiroFilter;
+import org.glassfish.jersey.servlet.ServletContainer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.apache.streampipes.app.file.export.application.AppFileExportApplication;
+import org.apache.streampipes.manager.operations.Operations;
+import org.apache.streampipes.model.client.pipeline.PipelineOperationStatus;
+import org.apache.streampipes.rest.notifications.NotificationListener;
+
+import java.util.List;
+
+import javax.annotation.PreDestroy;
+import javax.servlet.ServletContextListener;
+
+@Configuration
+@EnableAutoConfiguration
+@Import({ StreamPipesResourceConfig.class, WelcomePageController.class })
+public class StreamPipesBackendApplication {
+
+  private static final Logger LOG = LoggerFactory.getLogger(StreamPipesBackendApplication.class.getCanonicalName());
+
+  public static void main(String[] args) {
+    System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
+    SpringApplication.run(StreamPipesBackendApplication.class, args);
+  }
+
+  @PreDestroy
+  public void onExit() {
+   LOG.info("Shutting down StreamPipes...");
+    List<PipelineOperationStatus> status = Operations.stopAllPipelines();
+    status.forEach(s -> {
+      if (s.isSuccess()) {
+        LOG.info("Pipeline {} successfully stopped", s.getPipelineName());
+      } else {
+        LOG.error("Pipeline {} could not be stopped", s.getPipelineName());
+      }
+    });
+  }
+
+  @Bean
+  public ServletRegistrationBean appFileExportRegistrationBean() {
+    ServletContainer jerseyContainer = new ServletContainer(new AppFileExportApplication());
+    return new ServletRegistrationBean<>(jerseyContainer, "/api/apps/*");
+  }
+
+  @Bean
+  public FilterRegistrationBean shiroFilterBean() {
+    FilterRegistrationBean<OncePerRequestFilter> bean = new FilterRegistrationBean<>();
+    bean.setFilter(new ShiroFilter());
+    bean.addUrlPatterns("/api/*");
+    return bean;
+  }
+
+  @Bean
+  public ServletListenerRegistrationBean shiroListenerBean() {
+    return listener(new EnvironmentLoaderListener());
+  }
+
+  @Bean
+  public ServletListenerRegistrationBean streamPipesNotificationListenerBean() {
+    return listener(new NotificationListener());
+  }
+
+  private ServletListenerRegistrationBean listener(ServletContextListener listener) {
+    ServletListenerRegistrationBean<ServletContextListener> bean =
+            new ServletListenerRegistrationBean<>();
+    bean.setListener(listener);
+    return bean;
+  }
+
+}
diff --git a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java
new file mode 100644
index 0000000..3863855
--- /dev/null
+++ b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.backend;
+
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.springframework.context.annotation.Configuration;
+import org.apache.streampipes.rest.impl.ApplicationLink;
+import org.apache.streampipes.rest.impl.AssetDashboard;
+import org.apache.streampipes.rest.impl.Authentication;
+import org.apache.streampipes.rest.impl.AutoComplete;
+import org.apache.streampipes.rest.impl.ConsulConfig;
+import org.apache.streampipes.rest.impl.ContainerProvidedOptions;
+import org.apache.streampipes.rest.impl.Couchdb;
+import org.apache.streampipes.rest.impl.DataStream;
+import org.apache.streampipes.rest.impl.Deployment;
+import org.apache.streampipes.rest.impl.InternalPipelineTemplates;
+import org.apache.streampipes.rest.impl.Notification;
+import org.apache.streampipes.rest.impl.OntologyContext;
+import org.apache.streampipes.rest.impl.OntologyKnowledge;
+import org.apache.streampipes.rest.impl.OntologyMeasurementUnit;
+import org.apache.streampipes.rest.impl.OntologyPipelineElement;
+import org.apache.streampipes.rest.impl.PipelineCategory;
+import org.apache.streampipes.rest.impl.PipelineElementAsset;
+import org.apache.streampipes.rest.impl.PipelineElementCategory;
+import org.apache.streampipes.rest.impl.PipelineElementFile;
+import org.apache.streampipes.rest.impl.PipelineElementImport;
+import org.apache.streampipes.rest.impl.PipelineElementRuntimeInfo;
+import org.apache.streampipes.rest.impl.PipelineTemplate;
+import org.apache.streampipes.rest.impl.PipelineWithUserResource;
+import org.apache.streampipes.rest.impl.RdfEndpoint;
+import org.apache.streampipes.rest.impl.SemanticEventConsumer;
+import org.apache.streampipes.rest.impl.SemanticEventProcessingAgent;
+import org.apache.streampipes.rest.impl.SemanticEventProducer;
+import org.apache.streampipes.rest.impl.Setup;
+import org.apache.streampipes.rest.impl.StreamPipesLogs;
+import org.apache.streampipes.rest.impl.User;
+import org.apache.streampipes.rest.impl.Version;
+import org.apache.streampipes.rest.impl.VirtualSensor;
+import org.apache.streampipes.rest.impl.Visualization;
+import org.apache.streampipes.rest.impl.datalake.DataLakeNoUserResourceV3;
+import org.apache.streampipes.rest.impl.datalake.DataLakeResourceV3;
+import org.apache.streampipes.rest.impl.nouser.FileServingResource;
+import org.apache.streampipes.rest.impl.nouser.PipelineElementImportNoUser;
+import org.apache.streampipes.rest.impl.nouser.PipelineNoUserResource;
+import org.apache.streampipes.rest.shared.serializer.GsonClientModelProvider;
+import org.apache.streampipes.rest.shared.serializer.GsonWithIdProvider;
+import org.apache.streampipes.rest.shared.serializer.GsonWithoutIdProvider;
+import org.apache.streampipes.rest.shared.serializer.JsonLdProvider;
+
+import javax.ws.rs.ApplicationPath;
+
+@Configuration
+@ApplicationPath("/api")
+public class StreamPipesResourceConfig extends ResourceConfig {
+
+  public StreamPipesResourceConfig() {
+    register(Authentication.class);
+    register(Authentication.class);
+    register(AssetDashboard.class);
+    register(AutoComplete.class);
+    register(PipelineElementCategory.class);
+    register(Deployment.class);
+    register(Notification.class);
+    register(OntologyContext.class);
+    register(OntologyKnowledge.class);
+    register(OntologyMeasurementUnit.class);
+    register(OntologyPipelineElement.class);
+    register(PipelineWithUserResource.class);
+    register(PipelineNoUserResource.class);
+    register(PipelineElementImportNoUser.class);
+    register(PipelineCategory.class);
+    register(PipelineElementImport.class);
+    register(SemanticEventConsumer.class);
+    register(SemanticEventProcessingAgent.class);
+    register(SemanticEventProducer.class);
+    register(Setup.class);
+    register(VirtualSensor.class);
+    register(Visualization.class);
+    register(RdfEndpoint.class);
+    register(ApplicationLink.class);
+    register(User.class);
+    register(ConsulConfig.class);
+    register(DataStream.class);
+    register(ContainerProvidedOptions.class);
+    register(StreamPipesLogs.class);
+    register(PipelineTemplate.class);
+    register(Couchdb.class);
+    register(InternalPipelineTemplates.class);
+    register(PipelineElementRuntimeInfo.class);
+    register(Version.class);
+    register(PipelineElementAsset.class);
+    register(DataLakeResourceV3.class);
+    register(DataLakeNoUserResourceV3.class);
+    register(PipelineElementFile.class);
+    register(FileServingResource.class);
+
+
+    // Serializers
+    register(GsonWithIdProvider.class);
+    register(GsonWithoutIdProvider.class);
+    register(GsonClientModelProvider.class);
+    register(JsonLdProvider.class);
+
+    register(MultiPartFeature.class);
+  }
+
+}
diff --git a/streampipes-backend/src/main/java/org/apache/streampipes/backend/WelcomePageController.java b/streampipes-backend/src/main/java/org/apache/streampipes/backend/WelcomePageController.java
new file mode 100644
index 0000000..c822ff5
--- /dev/null
+++ b/streampipes-backend/src/main/java/org/apache/streampipes/backend/WelcomePageController.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.backend;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Controller
+public class WelcomePageController {
+
+  @RequestMapping(path = "/")
+  public String index() {
+    return "/index.html";
+  }
+}
diff --git a/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesBackendApplication.java b/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesBackendApplication.java
deleted file mode 100644
index ac6bbcc..0000000
--- a/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesBackendApplication.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.backend;
-
-import org.apache.shiro.web.env.EnvironmentLoaderListener;
-import org.apache.shiro.web.servlet.OncePerRequestFilter;
-import org.apache.shiro.web.servlet.ShiroFilter;
-import org.glassfish.jersey.servlet.ServletContainer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
-import org.springframework.boot.web.servlet.ServletRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.streampipes.app.file.export.application.AppFileExportApplication;
-import org.streampipes.manager.operations.Operations;
-import org.streampipes.model.client.pipeline.PipelineOperationStatus;
-import org.streampipes.rest.notifications.NotificationListener;
-
-import java.util.List;
-
-import javax.annotation.PreDestroy;
-import javax.servlet.ServletContextListener;
-
-@Configuration
-@EnableAutoConfiguration
-@Import({ StreamPipesResourceConfig.class, WelcomePageController.class })
-public class StreamPipesBackendApplication {
-
-  private static final Logger LOG = LoggerFactory.getLogger(StreamPipesBackendApplication.class.getCanonicalName());
-
-  public static void main(String[] args) {
-    System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH", "true");
-    SpringApplication.run(StreamPipesBackendApplication.class, args);
-  }
-
-  @PreDestroy
-  public void onExit() {
-   LOG.info("Shutting down StreamPipes...");
-    List<PipelineOperationStatus> status = Operations.stopAllPipelines();
-    status.forEach(s -> {
-      if (s.isSuccess()) {
-        LOG.info("Pipeline {} successfully stopped", s.getPipelineName());
-      } else {
-        LOG.error("Pipeline {} could not be stopped", s.getPipelineName());
-      }
-    });
-  }
-
-  @Bean
-  public ServletRegistrationBean appFileExportRegistrationBean() {
-    ServletContainer jerseyContainer = new ServletContainer(new AppFileExportApplication());
-    return new ServletRegistrationBean<>(jerseyContainer, "/api/apps/*");
-  }
-
-  @Bean
-  public FilterRegistrationBean shiroFilterBean() {
-    FilterRegistrationBean<OncePerRequestFilter> bean = new FilterRegistrationBean<>();
-    bean.setFilter(new ShiroFilter());
-    bean.addUrlPatterns("/api/*");
-    return bean;
-  }
-
-  @Bean
-  public ServletListenerRegistrationBean shiroListenerBean() {
-    return listener(new EnvironmentLoaderListener());
-  }
-
-  @Bean
-  public ServletListenerRegistrationBean streamPipesNotificationListenerBean() {
-    return listener(new NotificationListener());
-  }
-
-  private ServletListenerRegistrationBean listener(ServletContextListener listener) {
-    ServletListenerRegistrationBean<ServletContextListener> bean =
-            new ServletListenerRegistrationBean<>();
-    bean.setListener(listener);
-    return bean;
-  }
-
-}
diff --git a/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesResourceConfig.java b/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesResourceConfig.java
deleted file mode 100644
index 02b9b92..0000000
--- a/streampipes-backend/src/main/java/org/streampipes/backend/StreamPipesResourceConfig.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.backend;
-
-import org.glassfish.jersey.media.multipart.MultiPartFeature;
-import org.glassfish.jersey.server.ResourceConfig;
-import org.springframework.context.annotation.Configuration;
-import org.streampipes.rest.impl.ApplicationLink;
-import org.streampipes.rest.impl.AssetDashboard;
-import org.streampipes.rest.impl.Authentication;
-import org.streampipes.rest.impl.AutoComplete;
-import org.streampipes.rest.impl.ConsulConfig;
-import org.streampipes.rest.impl.ContainerProvidedOptions;
-import org.streampipes.rest.impl.Couchdb;
-import org.streampipes.rest.impl.DataStream;
-import org.streampipes.rest.impl.Deployment;
-import org.streampipes.rest.impl.InternalPipelineTemplates;
-import org.streampipes.rest.impl.Notification;
-import org.streampipes.rest.impl.OntologyContext;
-import org.streampipes.rest.impl.OntologyKnowledge;
-import org.streampipes.rest.impl.OntologyMeasurementUnit;
-import org.streampipes.rest.impl.OntologyPipelineElement;
-import org.streampipes.rest.impl.PipelineCategory;
-import org.streampipes.rest.impl.PipelineElementAsset;
-import org.streampipes.rest.impl.PipelineElementCategory;
-import org.streampipes.rest.impl.PipelineElementFile;
-import org.streampipes.rest.impl.PipelineElementImport;
-import org.streampipes.rest.impl.PipelineElementRuntimeInfo;
-import org.streampipes.rest.impl.PipelineTemplate;
-import org.streampipes.rest.impl.PipelineWithUserResource;
-import org.streampipes.rest.impl.RdfEndpoint;
-import org.streampipes.rest.impl.SemanticEventConsumer;
-import org.streampipes.rest.impl.SemanticEventProcessingAgent;
-import org.streampipes.rest.impl.SemanticEventProducer;
-import org.streampipes.rest.impl.Setup;
-import org.streampipes.rest.impl.StreamPipesLogs;
-import org.streampipes.rest.impl.User;
-import org.streampipes.rest.impl.Version;
-import org.streampipes.rest.impl.VirtualSensor;
-import org.streampipes.rest.impl.Visualization;
-import org.streampipes.rest.impl.datalake.DataLakeNoUserResourceV3;
-import org.streampipes.rest.impl.datalake.DataLakeResourceV3;
-import org.streampipes.rest.impl.nouser.FileServingResource;
-import org.streampipes.rest.impl.nouser.PipelineElementImportNoUser;
-import org.streampipes.rest.impl.nouser.PipelineNoUserResource;
-import org.streampipes.rest.shared.serializer.GsonClientModelProvider;
-import org.streampipes.rest.shared.serializer.GsonWithIdProvider;
-import org.streampipes.rest.shared.serializer.GsonWithoutIdProvider;
-import org.streampipes.rest.shared.serializer.JsonLdProvider;
-
-import javax.ws.rs.ApplicationPath;
-
-@Configuration
-@ApplicationPath("/api")
-public class StreamPipesResourceConfig extends ResourceConfig {
-
-  public StreamPipesResourceConfig() {
-    register(Authentication.class);
-    register(Authentication.class);
-    register(AssetDashboard.class);
-    register(AutoComplete.class);
-    register(PipelineElementCategory.class);
-    register(Deployment.class);
-    register(Notification.class);
-    register(OntologyContext.class);
-    register(OntologyKnowledge.class);
-    register(OntologyMeasurementUnit.class);
-    register(OntologyPipelineElement.class);
-    register(PipelineWithUserResource.class);
-    register(PipelineNoUserResource.class);
-    register(PipelineElementImportNoUser.class);
-    register(PipelineCategory.class);
-    register(PipelineElementImport.class);
-    register(SemanticEventConsumer.class);
-    register(SemanticEventProcessingAgent.class);
-    register(SemanticEventProducer.class);
-    register(Setup.class);
-    register(VirtualSensor.class);
-    register(Visualization.class);
-    register(RdfEndpoint.class);
-    register(ApplicationLink.class);
-    register(User.class);
-    register(ConsulConfig.class);
-    register(DataStream.class);
-    register(ContainerProvidedOptions.class);
-    register(StreamPipesLogs.class);
-    register(PipelineTemplate.class);
-    register(Couchdb.class);
-    register(InternalPipelineTemplates.class);
-    register(PipelineElementRuntimeInfo.class);
-    register(Version.class);
-    register(PipelineElementAsset.class);
-    register(DataLakeResourceV3.class);
-    register(DataLakeNoUserResourceV3.class);
-    register(PipelineElementFile.class);
-    register(FileServingResource.class);
-
-
-    // Serializers
-    register(GsonWithIdProvider.class);
-    register(GsonWithoutIdProvider.class);
-    register(GsonClientModelProvider.class);
-    register(JsonLdProvider.class);
-
-    register(MultiPartFeature.class);
-  }
-
-}
diff --git a/streampipes-backend/src/main/java/org/streampipes/backend/WelcomePageController.java b/streampipes-backend/src/main/java/org/streampipes/backend/WelcomePageController.java
deleted file mode 100644
index 6b9d452..0000000
--- a/streampipes-backend/src/main/java/org/streampipes/backend/WelcomePageController.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.backend;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-public class WelcomePageController {
-
-  @RequestMapping(path = "/")
-  public String index() {
-    return "/index.html";
-  }
-}
diff --git a/streampipes-backend/src/main/resources/shiro.ini b/streampipes-backend/src/main/resources/shiro.ini
index a64e0cc..36559b1 100644
--- a/streampipes-backend/src/main/resources/shiro.ini
+++ b/streampipes-backend/src/main/resources/shiro.ini
@@ -26,8 +26,8 @@
 rememberMe = org.apache.shiro.web.mgt.CookieRememberMeManager
 securityManager.rememberMeManager = $rememberMe
 
-customFilter = org.streampipes.rest.authentication.StreamPipesFilter
-StreamPipeRealm = org.streampipes.user.management.authentication.StreamPipesRealm
+customFilter = org.apache.streampipes.rest.authentication.StreamPipesFilter
+StreamPipeRealm = org.apache.streampipes.user.management.authentication.StreamPipesRealm
 authc.loginUrl = /login.html
 
 securityManager.rememberMeManager.cookie.name = StreamPipesRememberMe
diff --git a/streampipes-code-generation/pom.xml b/streampipes-code-generation/pom.xml
index b2c9553..66cb093 100644
--- a/streampipes-code-generation/pom.xml
+++ b/streampipes-code-generation/pom.xml
@@ -19,7 +19,7 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.streampipes</groupId>
+        <groupId>org.apache.streampipes</groupId>
         <artifactId>streampipes-parent</artifactId>
         <version>0.65.1-SNAPSHOT</version>
     </parent>
@@ -37,18 +37,18 @@
     <dependencies>
         <!-- StreamPipes dependencies -->
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-container-standalone</artifactId>
             <version>0.65.1-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-model-client</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
         <dependency>
-            <groupId>org.streampipes</groupId>
+            <groupId>org.apache.streampipes</groupId>
             <artifactId>streampipes-sdk</artifactId>
             <version>0.65.1-SNAPSHOT</version>
         </dependency>
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/ControllerGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/ControllerGenerator.java
new file mode 100644
index 0000000..27a842d
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/ControllerGenerator.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration;
+
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.MethodSpec.Builder;
+import org.apache.streampipes.codegeneration.utils.JFC;
+import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.grounding.EventGrounding;
+import org.apache.streampipes.model.output.AppendOutputStrategy;
+import org.apache.streampipes.model.output.CustomOutputStrategy;
+import org.apache.streampipes.model.output.OutputStrategy;
+import org.apache.streampipes.model.schema.EventProperty;
+
+import java.util.List;
+
+import javax.lang.model.element.Modifier;
+
+public abstract class ControllerGenerator extends Generator {
+	public ControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+	}
+
+	public Builder getEventStream(Builder b, SpDataStream spDataStream, int n) {
+		b = getEventProperties(b, spDataStream.getEventSchema().getEventProperties(), n);
+		b.addStatement(
+				"$T stream$L = $T.createStream($S, $S, $S).schema($T.create().properties(eventProperties$L).build()).build()",
+				JFC.EVENT_STREAM, n, JFC.STREAM_BUILDER, spDataStream.getName(), spDataStream.getDescription(),
+				spDataStream.getUri(), JFC.SCHEMA_BUILDER, n);
+
+		return b;
+	}
+
+	public Builder getEventProperties(Builder b, List<EventProperty> eventProperties, int n) {
+		b.addStatement("$T<$T> eventProperties$L = new $T<$T>()", JFC.LIST, JFC.EVENT_PROPERTY, n, JFC.ARRAY_LIST,
+				JFC.EVENT_PROPERTY);
+
+		for (int i = 0; i < eventProperties.size(); i++) {
+			// TODO check for type
+			if (eventProperties.get(i).getDomainProperties() != null && eventProperties.get(i).getDomainProperties().size() > 0) {
+//				b.addStatement("$T e$L = $T.createPropertyRestriction($S).build()", JFC.EVENT_PROPERTY, i,
+//						JFC.PRIMITIVE_PROPERTY_BUILDER, eventProperties.get(i).getDomainProperties().get(0));
+				b.addStatement("eventProperties$L.add(e$L)", n, i);
+			}
+		}
+
+		return b;
+	}
+
+	public Builder getCustomOutputStrategy(Builder b, CustomOutputStrategy cos, int n) {
+		b.addStatement("$T outputStrategy$L = new $T()", JFC.APPEND_OUTPUT_STRATEGY, n, JFC.APPEND_OUTPUT_STRATEGY);
+
+		return b;
+	}
+
+	public Builder getAppendOutputStrategy(Builder b, AppendOutputStrategy aos, int n) {
+		b.addStatement("$T outputStrategy$L = new $T()", JFC.APPEND_OUTPUT_STRATEGY, n, JFC.APPEND_OUTPUT_STRATEGY);
+		b.addStatement("$T<$T> appendProperties = new $T<$T>()", JFC.LIST, JFC.EVENT_PROPERTY, JFC.ARRAY_LIST,
+				JFC.EVENT_PROPERTY);
+
+		for (EventProperty ep : aos.getEventProperties()) {
+			// TODO
+			b.addStatement("appendProperties.add($T.stringEp($S, $S))", JFC.EP_PROPERTIES, ep.getRuntimeName(),
+					ep.getDomainProperties().get(0).toString());
+		}
+
+		b.addStatement("outputStrategy$L.setEventProperties(appendProperties)", n);
+
+		return b;
+	}
+
+	public Builder getOutputStrategies(Builder b, List<OutputStrategy> outputStrategies) {
+		b.addStatement("$T<$T> strategies = new $T<$T>()", JFC.LIST, JFC.OUTPUT_STRATEGY, JFC.ARRAY_LIST,
+				JFC.OUTPUT_STRATEGY);
+		for (int i = 0; i < outputStrategies.size(); i++) {
+			OutputStrategy outputStrategy = outputStrategies.get(i);
+			if (outputStrategy instanceof AppendOutputStrategy) {
+				b = getAppendOutputStrategy(b, (AppendOutputStrategy) outputStrategy, i);
+			} else if (outputStrategy instanceof CustomOutputStrategy) {
+				b = getCustomOutputStrategy(b, (CustomOutputStrategy) outputStrategy, i);
+			} else {
+				// TODO add implementation for the other strategies
+				try {
+					throw new Exception("Not yet Implemented");
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+
+			b.addStatement("strategies.add(outputStrategy$L)", i);
+		}
+
+		return b;
+	}
+
+	public Builder getSupportedGrounding(Builder b, EventGrounding grounding) {
+		return b.addStatement("desc.setSupportedGrounding($T.getSupportedGrounding())", JFC.STANDARD_TRANSPORT_FORMAT);
+	}
+
+	public Builder getDeclareModelCode(ClassName desc) {
+		Builder b = MethodSpec.methodBuilder("declareModel").addModifiers(Modifier.PUBLIC).addAnnotation(Override.class)
+				.returns(desc);
+
+		b.addStatement("$T desc = new $T($S, $S, $S)", desc, desc, element.getUri(),
+				element.getName(), element.getDescription());
+
+		for (int i = 0; i < element.getSpDataStreams().size(); i++) {
+			// TODO
+			b = getEventStream(b, element.getSpDataStreams().get(i), i);
+			b.addStatement("desc.addEventStream(stream$L)", i);
+		}
+
+		//TODO find better solution
+		if (element instanceof DataProcessorDescription) {
+			b = getOutputStrategies(b, ((DataProcessorDescription) element).getOutputStrategies());
+			b.addStatement("desc.setOutputStrategies(strategies)");
+		}
+
+		b = getSupportedGrounding(b, element.getSupportedGrounding());
+
+		b.addStatement("return desc");
+
+		return b;
+	}
+}
\ No newline at end of file
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/Generator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/Generator.java
new file mode 100644
index 0000000..5617115
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/Generator.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration;
+
+import com.squareup.javapoet.JavaFile;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+
+public abstract class Generator {
+	protected String name;
+	protected String packageName;
+	protected ConsumableStreamPipesEntity element;
+	
+	public Generator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super();
+		this.element = element;
+		this.name = name;
+		this.packageName = packageName;
+	}
+
+	public abstract JavaFile build();
+	
+	public ConsumableStreamPipesEntity getElement() {
+		return element;
+	}
+
+	public void setElement(ConsumableStreamPipesEntity element) {
+		this.element = element;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPackageName() {
+		return packageName;
+	}
+
+	public void setPackageName(String packageName) {
+		this.packageName = packageName;
+	}
+	
+	
+	
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/CodeGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/CodeGenerator.java
new file mode 100644
index 0000000..8bb3fa8
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/CodeGenerator.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.api;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.base.NamedStreamPipesEntity;
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+import org.apache.streampipes.model.client.deployment.OutputType;
+import org.apache.streampipes.model.client.deployment.RuntimeType;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.codegeneration.flink.sepa.FlinkSepaCodeGenerator;
+
+public abstract class CodeGenerator {
+    protected ConsumableStreamPipesEntity element;
+    protected DeploymentConfiguration config;
+
+    public CodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
+        this.config = config;
+        this.element = element;
+    }
+
+    public static ImplementationCodeGenerator getCodeGenerator(DeploymentConfiguration config, NamedStreamPipesEntity element) {
+
+       if (config.getOutputType() == OutputType.IMPLEMENTATION) {
+            if (config.getRuntimeType() == RuntimeType.FLINK) {
+                if (element instanceof DataProcessorDescription) {
+                    return new FlinkSepaCodeGenerator(config, (DataProcessorDescription) element, isStandalone(config));
+                }
+            }
+        } else if (config.getOutputType() == OutputType.DESCRIPTION) {
+        		return new FlinkSepaCodeGenerator(config, (DataProcessorDescription) element, isStandalone(config));
+    	}
+    	return null;
+	}
+
+    private static boolean isStandalone(DeploymentConfiguration config) {
+        return config.getOutputType() == OutputType.IMPLEMENTATION;
+    }
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/IDeclareModelGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/IDeclareModelGenerator.java
new file mode 100644
index 0000000..3d64b1e
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/IDeclareModelGenerator.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.codegeneration.api;
+
+import com.squareup.javapoet.MethodSpec.Builder;
+
+public class IDeclareModelGenerator {
+
+  Builder outputStrategies() {
+    return null;
+  }
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/ImplementationCodeGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/ImplementationCodeGenerator.java
new file mode 100644
index 0000000..f7295c4
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/api/ImplementationCodeGenerator.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.api;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.streampipes.commons.zip.ZipFileGenerator;
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+public abstract class ImplementationCodeGenerator extends CodeGenerator {
+
+	protected String tempFolder;
+
+	public ImplementationCodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
+		super(config, element);
+		this.tempFolder = RandomStringUtils.randomAlphabetic(8) + config.getArtifactId();
+	}
+
+	public File createProject() {
+		createFolder(getTempDir());
+		create();
+		File result = toZip();
+		deleteFolder(getTempDir());
+		return result;
+	}
+
+	private void createFolder(String folder) {
+		File file = new File(folder);
+		file.mkdir();
+	}
+	
+	private void deleteFolder(String folder) {
+		try {
+			FileUtils.deleteDirectory(new File(folder));
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	//TODO change this
+	public File getGeneratedFile() {
+		return createProject();
+	}
+
+	protected abstract void create();
+
+	protected abstract void createDirectoryStructure();
+
+	public abstract String getDeclareModel();
+
+	protected String getTempDir() {
+		return System.getProperty("user.home") + File.separator +".streampipes" +File.separator + tempFolder + File.separator;
+	}
+
+	protected File toZip() {
+		String generatedProjects = System.getProperty("user.home") + File.separator +".streampipes" +File.separator + "generated_projects"
+				+ File.separator;
+		createFolder(generatedProjects);
+
+		String zipFolder = generatedProjects + new Date().getTime() + "_";
+		File outputFile = new File(zipFolder + config.getArtifactId() + ".zip");
+		new ZipFileGenerator(new File(getTempDir()), outputFile).makeZipToFile();
+		return outputFile;
+	}
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/declarer/DeclareModelGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/declarer/DeclareModelGenerator.java
new file mode 100644
index 0000000..2608d55
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/declarer/DeclareModelGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.codegeneration.declarer;
+
+public class DeclareModelGenerator {
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/ConfigGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/ConfigGenerator.java
new file mode 100644
index 0000000..c775119
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/ConfigGenerator.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+import com.squareup.javapoet.FieldSpec;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.TypeSpec;
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+import javax.lang.model.element.Modifier;
+
+public class ConfigGenerator extends Generator {
+
+	public ConfigGenerator(ConsumableStreamPipesEntity sepa, String name, String packageName) {
+		super(sepa, name, packageName);
+	}
+
+	@Override
+	public JavaFile build() {
+		FieldSpec jar = FieldSpec.builder(JFC.STRING, "JAR_FILE")
+			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
+			    .initializer("$S" , "./" + name + "-0.40.3-SNAPSHOT.jar")
+			    .build();
+
+		FieldSpec flinkHost = FieldSpec.builder(JFC.STRING, "FLINK_HOST")
+			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
+//			    .initializer("$T.INSTANCE.getFlinkHost()", JFC.CLIENT_CONFIGURATION)
+			    .build();
+
+		FieldSpec flinkPort = FieldSpec.builder(int.class, "FLINK_PORT")
+			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
+//			    .initializer("$T.INSTANCE.getFlinkPort()", JFC.CLIENT_CONFIGURATION)
+			    .build();
+
+		TypeSpec parameterClass = TypeSpec.classBuilder("Config").addModifiers(Modifier.PUBLIC)
+				.addField(jar).addField(flinkHost).addField(flinkPort).build();
+
+		return JavaFile.builder(packageName, parameterClass).build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/FlinkCodeGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/FlinkCodeGenerator.java
new file mode 100644
index 0000000..8e66d02
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/FlinkCodeGenerator.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+import org.apache.streampipes.codegeneration.api.ImplementationCodeGenerator;
+import org.apache.streampipes.codegeneration.flink.sepa.FlinkSepaControllerGenerator;
+import org.apache.streampipes.codegeneration.utils.DirectoryBuilder;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+import java.io.File;
+
+public abstract class FlinkCodeGenerator extends ImplementationCodeGenerator {
+	protected String packageName;
+	protected String name;
+	protected String version;
+	protected String port;
+	
+	protected String src;
+	protected String webInf;
+
+	public FlinkCodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
+		super(config, element);
+		packageName = config.getGroupId() + "." + config.getArtifactId();
+		name = config.getClassNamePrefix();
+		version = "0.40.3-SNAPSHOT";
+		port = Integer.toString(config.getPort());
+		
+		src = getTempDir() + "src" + File.separator + "main" + File.separator + "java" + File.separator;
+		webInf = getTempDir() + "src" + File.separator + "main" + File.separator + "webapp" + File.separator + "WEB-INF" + File.separator;
+
+	}
+
+	@Override
+	protected void createDirectoryStructure() {
+		String r = getTempDir(); 
+		String dirs[] = {r + "target/", src, r + "src/api/resources/", r + "src/test/", webInf};
+
+		boolean success = DirectoryBuilder.createDirectories(dirs);
+
+		if (!success) {
+			try {
+				throw new Exception("Couldn't create folder structure");
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	@Override
+	public String getDeclareModel() {
+		return new FlinkSepaControllerGenerator(element, name, packageName).getDeclareModelCode(JFC.SEPA_DESCRIPTION).build().toString();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/InitGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/InitGenerator.java
new file mode 100644
index 0000000..ffbe78f
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/InitGenerator.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.lang.model.element.Modifier;
+
+import com.squareup.javapoet.*;
+import com.squareup.javapoet.MethodSpec.Builder;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+public class InitGenerator extends Generator {
+
+	private boolean standalone;
+	public InitGenerator(ConsumableStreamPipesEntity sepa, String name, String packageName, boolean standalone) {
+		super(sepa, name, packageName);
+
+		this.standalone = standalone;
+	}
+
+	@Override
+	public JavaFile build() {
+		List<ClassName> controllers = new ArrayList<>();
+		controllers.add(ClassName.get("", name + "Controller"));
+
+		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Init").addModifiers(Modifier.PUBLIC)
+				.superclass(JFC.CONTAINER_MODEL_SUBMITTER).addMethod(getInit(controllers))
+				.build();
+		return JavaFile.builder(packageName, controllerClass).build();
+	}
+
+	private MethodSpec getInit(List<ClassName> controllers) {
+		Builder b = MethodSpec.methodBuilder("init").addAnnotation(Override.class).returns(TypeName.VOID)
+				.addModifiers(Modifier.PUBLIC);
+		b.addStatement("$T.getInstance().setRoute($S)", JFC.DECLARERS_SINGLETON, name.toLowerCase());
+		for (ClassName cn : controllers) {
+			b.addStatement("$T.getInstance().add(new $S())", JFC.DECLARERS_SINGLETON, cn);
+		}
+
+		return b.build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/XmlGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/XmlGenerator.java
new file mode 100644
index 0000000..44156f8
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/XmlGenerator.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+import org.apache.streampipes.codegeneration.utils.Utils;
+
+public class XmlGenerator {
+	private String name;
+	private String packageName;
+	private String version;
+
+	public XmlGenerator(String name, String packageName, String version) {
+		this.name = name;
+		this.packageName = packageName;
+		this.version = version;
+	}
+
+	public String getPomFile(boolean standalone) {
+		String pom = Utils.readResourceFile("pom");
+		pom = pom.replaceAll("####name####", name.toLowerCase());
+		pom = pom.replaceAll("####version####", version);
+		return pom;
+	}
+	
+	public String getWebXmlFile() {
+		String webXml = Utils.readResourceFile("web");
+		webXml = webXml.replace("####name####", packageName + ".Init");
+		return webXml;
+	}
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java
new file mode 100644
index 0000000..2fe1985
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.codegeneration.flink.ConfigGenerator;
+import org.apache.streampipes.codegeneration.flink.FlinkCodeGenerator;
+import org.apache.streampipes.codegeneration.flink.XmlGenerator;
+import org.apache.streampipes.codegeneration.utils.Utils;
+
+public class FlinkSecCodeGenerator extends FlinkCodeGenerator {
+
+	public FlinkSecCodeGenerator(DeploymentConfiguration config, DataSinkDescription element) {
+		super(config, element);
+	}
+
+	@Override
+	protected void create() {
+		createDirectoryStructure();
+
+		// source files
+		Utils.writeToFile(new FlinkSecControllerGenerator(element, name, packageName).build(), src);
+		Utils.writeToFile(new FlinkSecProgramGenerator(element, name, packageName).build(), src);
+		Utils.writeToFile(new ConfigGenerator(element, name, packageName).build(), src);
+
+		// xml files
+		XmlGenerator xmlGenerator = new XmlGenerator(name, packageName, version);
+		Utils.writeToFile(xmlGenerator.getPomFile(true), getTempDir() + "pom.xml");
+		Utils.writeToFile(xmlGenerator.getWebXmlFile(), webInf + "web.xml");
+
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java
new file mode 100644
index 0000000..15e2f1b
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+import javax.lang.model.element.Modifier;
+
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.MethodSpec.Builder;
+import com.squareup.javapoet.TypeSpec;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.codegeneration.ControllerGenerator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+public class FlinkSecControllerGenerator extends ControllerGenerator {
+	private ClassName program;
+	private ClassName config;
+
+	public FlinkSecControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+		program = ClassName.get(packageName, name + "Program");
+		config = ClassName.get(packageName, "Config");
+	}
+
+	public Builder isVisualizable() {
+		Builder b = MethodSpec.methodBuilder("isVisualizable").addAnnotation(Override.class)
+				.addModifiers(Modifier.PUBLIC).addStatement("return false").returns(boolean.class);
+
+		return b;
+	}
+
+	public Builder getHtml() {
+		Builder b = MethodSpec.methodBuilder("getHtml").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC)
+				.addParameter(JFC.SEC_INVOCATION, "graph").addStatement("return null").returns(JFC.STRING);
+
+		return b;
+	}
+
+	public Builder getRuntime() {
+		Builder b = MethodSpec.methodBuilder("getRuntime").addAnnotation(Override.class)
+				.addModifiers(Modifier.PROTECTED).addParameter(DataSinkInvocation.class, "graph")
+				.addStatement("return new $T(graph, new $T($T.JAR_FILE, $T.FLINK_HOST, $T.FLINK_PORT))", program,
+						JFC.FLINK_DEPLOYMENT_CONFIG, config, config, config)
+				.returns(JFC.FLINK_SEC_RUNTIME);
+
+		return b;
+	}
+
+	@Override
+	public JavaFile build() {
+		MethodSpec declareModel = getDeclareModelCode(JFC.SEC_DESCRIPTION).build();
+		MethodSpec getRuntime = getRuntime().build();
+		MethodSpec isVisualizable = isVisualizable().build();
+		MethodSpec getHtml = getHtml().build();
+
+		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Controller").addModifiers(Modifier.PUBLIC)
+				.superclass(JFC.ABSTRACT_FLINK_CONSUMER_DECLARER).addMethod(declareModel).addMethod(isVisualizable)
+				.addMethod(getHtml).addMethod(getRuntime).build();
+
+		return JavaFile.builder(packageName, controllerClass).build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java
new file mode 100644
index 0000000..c6de206
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+import java.io.Serializable;
+
+import javax.lang.model.element.Modifier;
+
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeSpec;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+public class FlinkSecProgramGenerator extends Generator {
+
+	public FlinkSecProgramGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+	}
+
+	@Override
+	public JavaFile build() {
+		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
+		ParameterizedTypeName dataStreamSink = ParameterizedTypeName.get(JFC.DATA_STREAM_SINK, mapStringObject);
+		ParameterizedTypeName dataStream = ParameterizedTypeName.get(JFC.DATA_STREAM, mapStringObject);
+
+		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(JFC.SEC_INVOCATION, "graph").addStatement("super(graph)").build();
+
+		MethodSpec constructorConfig = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(JFC.SEC_INVOCATION, "graph").addParameter(JFC.FLINK_DEPLOYMENT_CONFIG, "config")
+				.addStatement("super(graph, config)").build();
+
+		MethodSpec getApplicationLogic = MethodSpec.methodBuilder("getSink").addAnnotation(JFC.OVERRIDE)
+				.addModifiers(Modifier.PUBLIC).returns(dataStreamSink).addParameter(dataStream, "convertedStream")
+				.addCode("// TODO implement\nreturn null;\n").build();
+
+		TypeSpec programClass = TypeSpec.classBuilder(name + "Program").addModifiers(Modifier.PUBLIC)
+				.superclass(JFC.FLINK_SEC_RUNTIME).addSuperinterface(Serializable.class).addMethod(constructor)
+				.addMethod(constructorConfig).addMethod(getApplicationLogic).build();
+
+		return JavaFile.builder(packageName, programClass).build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java
new file mode 100644
index 0000000..dc54e35
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.codegeneration.flink.ConfigGenerator;
+import org.apache.streampipes.codegeneration.flink.FlinkCodeGenerator;
+import org.apache.streampipes.codegeneration.flink.InitGenerator;
+import org.apache.streampipes.codegeneration.flink.XmlGenerator;
+import org.apache.streampipes.codegeneration.utils.Utils;
+
+public class FlinkSepaCodeGenerator extends FlinkCodeGenerator {
+
+	private boolean standalone;
+
+
+	public FlinkSepaCodeGenerator(DeploymentConfiguration config, DataProcessorDescription element, boolean standalone) {
+		super(config, element);
+		this.standalone = standalone;
+	}
+
+	@Override
+	protected void create() {
+		createDirectoryStructure();
+
+		// source files
+		Utils.writeToFile(new ParametersGenerator(element, name, packageName).build(), src);
+		Utils.writeToFile(new FlinkSepaControllerGenerator(element, name, packageName).build(), src);
+		Utils.writeToFile(new InitGenerator(element, name, packageName, standalone).build(), src);
+		Utils.writeToFile(new FlinkSepaProgramGenerator(element, name, packageName).build(), src);
+		Utils.writeToFile(new ConfigGenerator(element, name, packageName).build(), src);
+
+		// xml files
+		XmlGenerator xmlGenerator = new XmlGenerator(name, packageName, version);
+		Utils.writeToFile(xmlGenerator.getPomFile(standalone), getTempDir() + "pom.xml");
+		Utils.writeToFile(xmlGenerator.getWebXmlFile(), webInf + "web.xml");
+
+	}
+
+
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java
new file mode 100644
index 0000000..2b48476
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java
@@ -0,0 +1,110 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.MethodSpec.Builder;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeSpec;
+import org.apache.streampipes.codegeneration.ControllerGenerator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.model.staticproperty.FreeTextStaticProperty;
+import org.apache.streampipes.model.staticproperty.MappingProperty;
+import org.apache.streampipes.model.staticproperty.StaticProperty;
+
+import javax.lang.model.element.Modifier;
+
+public class FlinkSepaControllerGenerator extends ControllerGenerator {
+
+	private ClassName parameters;
+	private ClassName program;
+	private ClassName config;
+
+	public FlinkSepaControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+		parameters = ClassName.get(packageName, name + "Parameters");
+		program = ClassName.get(packageName, name + "Program");
+		config = ClassName.get(packageName, "Config");
+	}
+
+	public Builder getRuntime() {
+		Builder b = MethodSpec.methodBuilder("getRuntime").addAnnotation(Override.class)
+				.addModifiers(Modifier.PROTECTED).addParameter(DataProcessorInvocation.class, "graph")
+				.returns(ParameterizedTypeName.get(JFC.FLINK_SEPA_RUNTIME, parameters));
+
+		
+		for (StaticProperty sp : element.getStaticProperties()) {
+			getStaticProperty(b, sp);
+		}
+
+		String staticParam = "$T staticParam = new $T(graph, ";
+		for (StaticProperty sp : element.getStaticProperties()) {
+			staticParam = staticParam + sp.getInternalName() + ", ";
+		}
+		staticParam = staticParam.subSequence(0, staticParam.length() - 2) + ")";
+		b.addStatement(staticParam, parameters, parameters);
+
+		b.addStatement("return new $T(staticParam, new $T($T.JAR_FILE, $T.FLINK_HOST, $T.FLINK_PORT))", program,
+				JFC.FLINK_DEPLOYMENT_CONFIG, config, config, config);
+
+		return b;
+	}
+
+	private Builder getStaticProperty(Builder b, StaticProperty sp) {
+		String name = sp.getInternalName().replaceAll("-", "_").replaceAll("/", "_");
+		if (sp instanceof MappingProperty) {
+			// TODO use SDK
+//			b.addStatement("String $L = $T.getMappingPropertyName(graph, $S)", name, JFC.SEPA_UTILS,
+//					sp.getInternalName());
+		} else if (sp instanceof FreeTextStaticProperty) {
+			// TODO use SDK
+//			b.addStatement("String $L = $T.getFreeTextStaticPropertyValue(graph, $S)", name, JFC.SEPA_UTILS,
+//					sp.getInternalName());
+		} else {
+			// TODO add implementation for the other strategies
+			try {
+				throw new Exception("Not yet Implemented");
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		}
+		return b;
+	}
+
+	@Override
+	public JavaFile build() {
+		MethodSpec declareModel = getDeclareModelCode(JFC.SEPA_DESCRIPTION).build();
+		MethodSpec getRuntime = getRuntime().build();
+
+		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Controller").addModifiers(Modifier.PUBLIC)
+				.superclass(ParameterizedTypeName.get(JFC.ABSTRACT_FLINK_AGENT_DECLARER, parameters))
+				.addMethod(declareModel).addMethod(getRuntime).build();
+
+		return JavaFile.builder(packageName, controllerClass).build();
+	}
+
+	@Override
+	public String toString() {
+		return build().toString();
+	}
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java
new file mode 100644
index 0000000..c48f033
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+import javax.lang.model.element.Modifier;
+
+import com.squareup.javapoet.ClassName;
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeSpec;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+public class FlinkSepaProgramGenerator extends Generator {
+
+	public FlinkSepaProgramGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+	}
+
+	@Override
+	public JavaFile build() {
+		ClassName parameters = ClassName.get("", name + "Parameters");
+		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
+		ParameterizedTypeName d = ParameterizedTypeName.get(JFC.DATA_STREAM, mapStringObject);
+
+		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(parameters, "params").addStatement("super(params)").build();
+
+		MethodSpec constructorConfig = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(parameters, "params").addParameter(JFC.FLINK_DEPLOYMENT_CONFIG, "config")
+				.addStatement("super(params, config)").build();
+
+		MethodSpec getApplicationLogic = MethodSpec.methodBuilder("getApplicationLogic").addAnnotation(JFC.OVERRIDE)
+				.addModifiers(Modifier.PROTECTED).returns(d)
+				.addParameter(d, "messageStream")
+				.addCode("// TODO implement\nreturn messageStream;\n")
+				.build();
+
+		TypeSpec programClass = TypeSpec.classBuilder(name + "Program").addModifiers(Modifier.PUBLIC)
+				.superclass(ParameterizedTypeName.get(JFC.FLINK_SEPA_RUNTIME, parameters)).addMethod(constructor)
+				.addMethod(constructorConfig).addMethod(getApplicationLogic).build();
+
+		return JavaFile.builder(packageName, programClass).build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java
new file mode 100644
index 0000000..e26932f
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+import javax.lang.model.element.Modifier;
+
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.ParameterizedTypeName;
+import com.squareup.javapoet.TypeName;
+import com.squareup.javapoet.TypeSpec;
+
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+
+public class ImplementationGenerator extends Generator {
+
+	public ImplementationGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+	}
+
+	@Override
+	public JavaFile build() {
+		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
+
+		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(JFC.STRING, "propertyName").addStatement("this.$N = $N", "propertyName", "propertyName")
+				.build();
+
+		TypeName in = mapStringObject;
+		TypeName out = ParameterizedTypeName.get(JFC.COLLECTOR, mapStringObject);
+
+		MethodSpec flatMap = MethodSpec.methodBuilder("flatMap").addAnnotation(JFC.OVERRIDE).addModifiers(Modifier.PUBLIC)
+				.addParameter(in, "in").addParameter(out, "out").addException(JFC.EXCEPTION)
+				.addStatement("Object o = in.get(propertyName)").addCode("//TODO implement\n").build();
+
+		TypeSpec parameterClass = TypeSpec.classBuilder(name).addModifiers(Modifier.PUBLIC)
+				.addSuperinterface(ParameterizedTypeName.get(JFC.FLAT_MAP_FUNCTION, mapStringObject, mapStringObject))
+				.addField(JFC.STRING, "propertyName", Modifier.PRIVATE).addMethod(constructor).addMethod(flatMap).build();
+
+		return JavaFile.builder(packageName, parameterClass).build();
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGenerator.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGenerator.java
new file mode 100644
index 0000000..e378cc0
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGenerator.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+import com.squareup.javapoet.JavaFile;
+import com.squareup.javapoet.MethodSpec;
+import com.squareup.javapoet.MethodSpec.Builder;
+import com.squareup.javapoet.TypeSpec;
+import org.apache.streampipes.codegeneration.Generator;
+import org.apache.streampipes.codegeneration.utils.JFC;
+import org.apache.streampipes.codegeneration.utils.Utils;
+import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
+import org.apache.streampipes.model.staticproperty.StaticProperty;
+
+import javax.lang.model.element.Modifier;
+
+public class ParametersGenerator extends Generator {
+
+	public ParametersGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
+		super(element, name, packageName);
+	}
+
+	public MethodSpec getConstructor() {
+		Builder b = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
+				.addParameter(JFC.SEPA_INVOCATION, "graph").addStatement("super(graph)");
+
+		for (StaticProperty sp : element.getStaticProperties()) {
+			String internalNameCamelCased = Utils.toCamelCase(sp.getInternalName());
+			b.addParameter(JFC.STRING, internalNameCamelCased);
+			b.addStatement("this.$N = $N", internalNameCamelCased, internalNameCamelCased);
+		}
+
+		return b.build();
+
+	}
+	
+
+	@Override
+	public JavaFile build() {
+		MethodSpec constructor = getConstructor();
+
+		TypeSpec.Builder parameterClass = TypeSpec.classBuilder(name + "Parameters").addModifiers(Modifier.PUBLIC)
+				.superclass(JFC.EVENT_PROCESSOR_BINDING_PARAMS).addMethod(constructor);
+
+		for (StaticProperty sp : element.getStaticProperties()) {
+			String internalName = Utils.toCamelCase(sp.getInternalName());
+			parameterClass.addField(JFC.STRING, internalName, Modifier.PRIVATE);
+			MethodSpec getter = MethodSpec.methodBuilder(getterName(internalName)).addModifiers(Modifier.PUBLIC)
+				.returns(JFC.STRING).addStatement("return " + internalName).build();
+			parameterClass.addMethod(getter);
+		}
+
+
+		return JavaFile.builder(packageName, parameterClass.build()).build();
+	}
+
+	private String getterName(String s) {
+		String result = s;
+		if (s != null && s.length() > 0) {
+			char first = Character.toUpperCase(s.charAt(0));
+			result = "get" + first + s.substring(1);
+		}
+		
+		return result;
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilder.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilder.java
new file mode 100644
index 0000000..47e6d93
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilder.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+import java.io.File;
+
+public abstract class DirectoryBuilder {
+	
+	/**
+	 * Use the / in the routes. It will be automatically replaced with File.seperator
+	 * @param dirs an array with directories that are created
+	 * @return whether the directory structure was created successfully 
+	 */
+	public static boolean createDirectories(String[] dirs) {
+		
+		for (String dir : dirs) {
+			if (!createDirectory(dir)) {
+				return false;
+			}
+		}
+
+		return true;
+	}
+
+	private static boolean createDirectory(String dir) {
+		String escapedSeparator = File.separator.equals("\\") ? "\\\\" : File.separator;
+		dir = dir.replaceAll("/", escapedSeparator);
+		if (dir != null) {
+			return (new File(dir)).mkdirs();
+		} else {
+			return false;
+		}
+	}
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/JFC.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/JFC.java
new file mode 100644
index 0000000..eab732f
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/JFC.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+
+import com.squareup.javapoet.ClassName;
+import org.apache.streampipes.container.init.DeclarersSingleton;
+import org.apache.streampipes.container.util.StandardTransportFormat;
+import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.model.graph.DataSinkDescription;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
+import org.apache.streampipes.model.output.AppendOutputStrategy;
+import org.apache.streampipes.model.output.OutputStrategy;
+import org.apache.streampipes.model.schema.EventProperty;
+import org.apache.streampipes.sdk.helpers.EpProperties;
+import org.apache.streampipes.sdk.stream.SchemaBuilder;
+import org.apache.streampipes.sdk.stream.StreamBuilder;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Java File Classes (JFC)
+ * @author philipp
+ *
+ */
+public abstract class JFC {
+
+	private static final String STREAMPIPES_MODEL_PACKAGE = "org.apache.streampipes.model";
+	private static final String STREAMPIPES_MODEL_PACKAGE_GRAPH = STREAMPIPES_MODEL_PACKAGE + ".graph";
+
+	private static final String SP_FLINK_PACKAGE = "org.apache.streampipes.wrapper.flink";
+	private static final String SP_WRAPPER_PACKAGE = "org.apache.streampipes.wrapper";
+
+	public static ClassName MAP = ClassName.get(Map.class);
+	public static ClassName LIST = ClassName.get(List.class);
+	public static ClassName ARRAY_LIST = ClassName.get(ArrayList.class);
+
+	public static ClassName STRING = ClassName.get("", "String");
+	public static ClassName OVERRIDE = ClassName.get("", "Override");
+	public static ClassName OBJECT = ClassName.get("", "Object");
+	public static ClassName EXCEPTION = ClassName.get("", "Exception");
+
+	public static ClassName DATA_STREAM = ClassName.get("org.apache.flink.streaming.api.datastream", "DataStream");
+	public static ClassName DATA_STREAM_SINK = ClassName.get("org.apache.flink.streaming.api.datastream", "DataStreamSink");
+	public static ClassName FLAT_MAP_FUNCTION = ClassName.get("org.apache.flink.api.common.functions", "FlatMapFunction");
+	public static ClassName COLLECTOR = ClassName.get("org.apache.flink.util", "Collector");
+
+	public static ClassName SEPA_DESCRIPTION = ClassName.get(STREAMPIPES_MODEL_PACKAGE_GRAPH, "DataProcessorInvocation");
+	public static ClassName SEC_DESCRIPTION = ClassName.get(DataSinkDescription.class);
+	public static ClassName SEPA_INVOCATION = ClassName.get(DataProcessorInvocation.class);
+	public static ClassName SEC_INVOCATION = ClassName.get(DataSinkInvocation.class);
+	public static ClassName EVENT_STREAM = ClassName.get(SpDataStream.class);
+	public static ClassName STREAM_BUILDER = ClassName.get(StreamBuilder.class);
+	public static ClassName SCHEMA_BUILDER = ClassName.get(SchemaBuilder.class);
+	public static ClassName EVENT_PROPERTY = ClassName.get(EventProperty.class);
+	//public static ClassName PRIMITIVE_PROPERTY_BUILDER = ClassName.get(PrimitivePropertyBuilder
+	//				.class);
+	public static ClassName APPEND_OUTPUT_STRATEGY = ClassName.get(AppendOutputStrategy.class);
+	public static ClassName OUTPUT_STRATEGY = ClassName.get(OutputStrategy.class);
+	public static ClassName EP_PROPERTIES = ClassName.get(EpProperties.class);
+	public static ClassName STANDARD_TRANSPORT_FORMAT = ClassName.get(StandardTransportFormat.class);
+//	public static ClassName EMBEDDED_MODEL_SUBMITTER = ClassName.get("EmbeddedModelSubmitter.class);
+//	public static ClassName SEMANTIC_EVENT_PROCESSING_AGENT_DECLARER = ClassName.get(SemanticEventProcessingAgentDeclarer.class);
+//	public static ClassName SEMANTIC_EVENT_PRODUCER_DECLARER = ClassName.get(SemanticEventProducerDeclarer.class);
+//	public static ClassName SEMANTIC_EVENT_CONSUMER_DECLARER = ClassName.get(SemanticEventConsumerDeclarer.class);
+
+	public static ClassName CONTAINER_MODEL_SUBMITTER = ClassName.get("de.fzi.cep.sepa.client.container.init", "ContainerModelSubmitter");
+	public static ClassName DECLARERS_SINGLETON = ClassName.get(DeclarersSingleton.class);
+
+
+
+	public static ClassName FLINK_DEPLOYMENT_CONFIG = ClassName.get(SP_FLINK_PACKAGE, "FlinkDeploymentConfig");
+	public static ClassName FLINK_SEPA_RUNTIME =  ClassName.get(SP_FLINK_PACKAGE, "FlinkDataProcessorRuntime");
+	public static ClassName FLINK_SEC_RUNTIME = ClassName.get(SP_FLINK_PACKAGE, "FlinkDataSinkRuntime");
+	public static ClassName ABSTRACT_FLINK_AGENT_DECLARER =  ClassName.get(SP_FLINK_PACKAGE, "FlinkDataProcessorDeclarer");
+	public static ClassName ABSTRACT_FLINK_CONSUMER_DECLARER =  ClassName.get(SP_FLINK_PACKAGE, "DataSinkDeclarer");
+
+	public static ClassName EVENT_PROCESSOR_BINDING_PARAMS = ClassName.get(SP_WRAPPER_PACKAGE +".params.binding", "EventProcessorBindingParams");
+}
diff --git a/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/Utils.java b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/Utils.java
new file mode 100644
index 0000000..8ca1903
--- /dev/null
+++ b/streampipes-code-generation/src/main/java/org/apache/streampipes/codegeneration/utils/Utils.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+import com.google.common.base.CaseFormat;
+import com.squareup.javapoet.JavaFile;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+
+public class Utils {
+
+  private static final String PROPERTY_SEPARATOR = "-";
+  private static final Logger LOG = LoggerFactory.getLogger(Utils.class);
+
+  public static String readResourceFile(String fileName) {
+
+    StringBuilder sb = new StringBuilder();
+    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+    InputStream input = classLoader.getResourceAsStream(fileName);
+    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
+    String line;
+    try {
+      while ((line = reader.readLine()) != null) {
+        sb.append(line);
+        sb.append("\n");
+      }
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+
+    return sb.toString();
+  }
+
+  public static String readFile(String fileName) {
+    BufferedReader br = null;
+
+    try {
+      br = new BufferedReader(new FileReader(fileName));
+      StringBuilder sb = new StringBuilder();
+      String line = br.readLine();
+
+      while (line != null) {
+        sb.append(line);
+        sb.append("\n");
+        line = br.readLine();
+      }
+      return sb.toString();
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+    } catch (IOException e) {
+      e.printStackTrace();
+    } finally {
+      try {
+        br.close();
+      } catch (IOException e) {
+        e.printStackTrace();
+      }
+    }
+
+    return "Couldn't read file: " + fileName;
+  }
+
+  public static void writeToFile(String content, String file) {
+    Path path = Paths.get(file);
+    byte[] b = content.getBytes();
+    try {
+      Files.write(path, b);
+    } catch (IOException e) {
+      LOG.error("Could not write to file", e);
+    }
+  }
+
+  public static void writeToFile(JavaFile content, String location) {
+    try {
+      content.writeTo(new File(location));
+    } catch (IOException e) {
+      e.printStackTrace();
+      LOG.error("Error: Could not write to file: {}", location, e);
+    }
+  }
+
+  public static String toCamelCase(String propertyName) {
+    if (propertyName.contains("-")) {
+      return CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, propertyName);
+    } else {
+      return propertyName;
+    }
+
+  }
+
+
+}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/ControllerGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/ControllerGenerator.java
deleted file mode 100644
index c7d8fa3..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/ControllerGenerator.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration;
-
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.MethodSpec.Builder;
-import org.streampipes.codegeneration.utils.JFC;
-import org.streampipes.model.SpDataStream;
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.model.grounding.EventGrounding;
-import org.streampipes.model.output.AppendOutputStrategy;
-import org.streampipes.model.output.CustomOutputStrategy;
-import org.streampipes.model.output.OutputStrategy;
-import org.streampipes.model.schema.EventProperty;
-
-import java.util.List;
-
-import javax.lang.model.element.Modifier;
-
-public abstract class ControllerGenerator extends Generator {
-	public ControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-	}
-
-	public Builder getEventStream(Builder b, SpDataStream spDataStream, int n) {
-		b = getEventProperties(b, spDataStream.getEventSchema().getEventProperties(), n);
-		b.addStatement(
-				"$T stream$L = $T.createStream($S, $S, $S).schema($T.create().properties(eventProperties$L).build()).build()",
-				JFC.EVENT_STREAM, n, JFC.STREAM_BUILDER, spDataStream.getName(), spDataStream.getDescription(),
-				spDataStream.getUri(), JFC.SCHEMA_BUILDER, n);
-
-		return b;
-	}
-
-	public Builder getEventProperties(Builder b, List<EventProperty> eventProperties, int n) {
-		b.addStatement("$T<$T> eventProperties$L = new $T<$T>()", JFC.LIST, JFC.EVENT_PROPERTY, n, JFC.ARRAY_LIST,
-				JFC.EVENT_PROPERTY);
-
-		for (int i = 0; i < eventProperties.size(); i++) {
-			// TODO check for type
-			if (eventProperties.get(i).getDomainProperties() != null && eventProperties.get(i).getDomainProperties().size() > 0) {
-//				b.addStatement("$T e$L = $T.createPropertyRestriction($S).build()", JFC.EVENT_PROPERTY, i,
-//						JFC.PRIMITIVE_PROPERTY_BUILDER, eventProperties.get(i).getDomainProperties().get(0));
-				b.addStatement("eventProperties$L.add(e$L)", n, i);
-			}
-		}
-
-		return b;
-	}
-
-	public Builder getCustomOutputStrategy(Builder b, CustomOutputStrategy cos, int n) {
-		b.addStatement("$T outputStrategy$L = new $T()", JFC.APPEND_OUTPUT_STRATEGY, n, JFC.APPEND_OUTPUT_STRATEGY);
-
-		return b;
-	}
-
-	public Builder getAppendOutputStrategy(Builder b, AppendOutputStrategy aos, int n) {
-		b.addStatement("$T outputStrategy$L = new $T()", JFC.APPEND_OUTPUT_STRATEGY, n, JFC.APPEND_OUTPUT_STRATEGY);
-		b.addStatement("$T<$T> appendProperties = new $T<$T>()", JFC.LIST, JFC.EVENT_PROPERTY, JFC.ARRAY_LIST,
-				JFC.EVENT_PROPERTY);
-
-		for (EventProperty ep : aos.getEventProperties()) {
-			// TODO
-			b.addStatement("appendProperties.add($T.stringEp($S, $S))", JFC.EP_PROPERTIES, ep.getRuntimeName(),
-					ep.getDomainProperties().get(0).toString());
-		}
-
-		b.addStatement("outputStrategy$L.setEventProperties(appendProperties)", n);
-
-		return b;
-	}
-
-	public Builder getOutputStrategies(Builder b, List<OutputStrategy> outputStrategies) {
-		b.addStatement("$T<$T> strategies = new $T<$T>()", JFC.LIST, JFC.OUTPUT_STRATEGY, JFC.ARRAY_LIST,
-				JFC.OUTPUT_STRATEGY);
-		for (int i = 0; i < outputStrategies.size(); i++) {
-			OutputStrategy outputStrategy = outputStrategies.get(i);
-			if (outputStrategy instanceof AppendOutputStrategy) {
-				b = getAppendOutputStrategy(b, (AppendOutputStrategy) outputStrategy, i);
-			} else if (outputStrategy instanceof CustomOutputStrategy) {
-				b = getCustomOutputStrategy(b, (CustomOutputStrategy) outputStrategy, i);
-			} else {
-				// TODO add implementation for the other strategies
-				try {
-					throw new Exception("Not yet Implemented");
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-
-			b.addStatement("strategies.add(outputStrategy$L)", i);
-		}
-
-		return b;
-	}
-
-	public Builder getSupportedGrounding(Builder b, EventGrounding grounding) {
-		return b.addStatement("desc.setSupportedGrounding($T.getSupportedGrounding())", JFC.STANDARD_TRANSPORT_FORMAT);
-	}
-
-	public Builder getDeclareModelCode(ClassName desc) {
-		Builder b = MethodSpec.methodBuilder("declareModel").addModifiers(Modifier.PUBLIC).addAnnotation(Override.class)
-				.returns(desc);
-
-		b.addStatement("$T desc = new $T($S, $S, $S)", desc, desc, element.getUri(),
-				element.getName(), element.getDescription());
-
-		for (int i = 0; i < element.getSpDataStreams().size(); i++) {
-			// TODO
-			b = getEventStream(b, element.getSpDataStreams().get(i), i);
-			b.addStatement("desc.addEventStream(stream$L)", i);
-		}
-
-		//TODO find better solution
-		if (element instanceof DataProcessorDescription) {
-			b = getOutputStrategies(b, ((DataProcessorDescription) element).getOutputStrategies());
-			b.addStatement("desc.setOutputStrategies(strategies)");
-		}
-
-		b = getSupportedGrounding(b, element.getSupportedGrounding());
-
-		b.addStatement("return desc");
-
-		return b;
-	}
-}
\ No newline at end of file
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/Generator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/Generator.java
deleted file mode 100644
index 8e7af2c..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/Generator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration;
-
-import com.squareup.javapoet.JavaFile;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-
-public abstract class Generator {
-	protected String name;
-	protected String packageName;
-	protected ConsumableStreamPipesEntity element;
-	
-	public Generator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super();
-		this.element = element;
-		this.name = name;
-		this.packageName = packageName;
-	}
-
-	public abstract JavaFile build();
-	
-	public ConsumableStreamPipesEntity getElement() {
-		return element;
-	}
-
-	public void setElement(ConsumableStreamPipesEntity element) {
-		this.element = element;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getPackageName() {
-		return packageName;
-	}
-
-	public void setPackageName(String packageName) {
-		this.packageName = packageName;
-	}
-	
-	
-	
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/CodeGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/CodeGenerator.java
deleted file mode 100644
index d018e55..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/CodeGenerator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.api;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.base.NamedStreamPipesEntity;
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-import org.streampipes.model.client.deployment.OutputType;
-import org.streampipes.model.client.deployment.RuntimeType;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.codegeneration.flink.sepa.FlinkSepaCodeGenerator;
-
-public abstract class CodeGenerator {
-    protected ConsumableStreamPipesEntity element;
-    protected DeploymentConfiguration config;
-
-    public CodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
-        this.config = config;
-        this.element = element;
-    }
-
-    public static ImplementationCodeGenerator getCodeGenerator(DeploymentConfiguration config, NamedStreamPipesEntity element) {
-
-       if (config.getOutputType() == OutputType.IMPLEMENTATION) {
-            if (config.getRuntimeType() == RuntimeType.FLINK) {
-                if (element instanceof DataProcessorDescription) {
-                    return new FlinkSepaCodeGenerator(config, (DataProcessorDescription) element, isStandalone(config));
-                }
-            }
-        } else if (config.getOutputType() == OutputType.DESCRIPTION) {
-        		return new FlinkSepaCodeGenerator(config, (DataProcessorDescription) element, isStandalone(config));
-    	}
-    	return null;
-	}
-
-    private static boolean isStandalone(DeploymentConfiguration config) {
-        return config.getOutputType() == OutputType.IMPLEMENTATION;
-    }
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/IDeclareModelGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/IDeclareModelGenerator.java
deleted file mode 100644
index 77ae47c..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/IDeclareModelGenerator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.codegeneration.api;
-
-import com.squareup.javapoet.MethodSpec.Builder;
-
-public class IDeclareModelGenerator {
-
-  Builder outputStrategies() {
-    return null;
-  }
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/ImplementationCodeGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/ImplementationCodeGenerator.java
deleted file mode 100644
index 3a6c818..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/api/ImplementationCodeGenerator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.api;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.streampipes.commons.zip.ZipFileGenerator;
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Date;
-
-public abstract class ImplementationCodeGenerator extends CodeGenerator {
-
-	protected String tempFolder;
-
-	public ImplementationCodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
-		super(config, element);
-		this.tempFolder = RandomStringUtils.randomAlphabetic(8) + config.getArtifactId();
-	}
-
-	public File createProject() {
-		createFolder(getTempDir());
-		create();
-		File result = toZip();
-		deleteFolder(getTempDir());
-		return result;
-	}
-
-	private void createFolder(String folder) {
-		File file = new File(folder);
-		file.mkdir();
-	}
-	
-	private void deleteFolder(String folder) {
-		try {
-			FileUtils.deleteDirectory(new File(folder));
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	//TODO change this
-	public File getGeneratedFile() {
-		return createProject();
-	}
-
-	protected abstract void create();
-
-	protected abstract void createDirectoryStructure();
-
-	public abstract String getDeclareModel();
-
-	protected String getTempDir() {
-		return System.getProperty("user.home") + File.separator +".streampipes" +File.separator + tempFolder + File.separator;
-	}
-
-	protected File toZip() {
-		String generatedProjects = System.getProperty("user.home") + File.separator +".streampipes" +File.separator + "generated_projects"
-				+ File.separator;
-		createFolder(generatedProjects);
-
-		String zipFolder = generatedProjects + new Date().getTime() + "_";
-		File outputFile = new File(zipFolder + config.getArtifactId() + ".zip");
-		new ZipFileGenerator(new File(getTempDir()), outputFile).makeZipToFile();
-		return outputFile;
-	}
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/declarer/DeclareModelGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/declarer/DeclareModelGenerator.java
deleted file mode 100644
index 8e72bf9..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/declarer/DeclareModelGenerator.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.codegeneration.declarer;
-
-public class DeclareModelGenerator {
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/ConfigGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/ConfigGenerator.java
deleted file mode 100644
index 6725b38..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/ConfigGenerator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink;
-
-import com.squareup.javapoet.FieldSpec;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.TypeSpec;
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-
-import javax.lang.model.element.Modifier;
-
-public class ConfigGenerator extends Generator {
-
-	public ConfigGenerator(ConsumableStreamPipesEntity sepa, String name, String packageName) {
-		super(sepa, name, packageName);
-	}
-
-	@Override
-	public JavaFile build() {
-		FieldSpec jar = FieldSpec.builder(JFC.STRING, "JAR_FILE")
-			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
-			    .initializer("$S" , "./" + name + "-0.40.3-SNAPSHOT.jar")
-			    .build();
-
-		FieldSpec flinkHost = FieldSpec.builder(JFC.STRING, "FLINK_HOST")
-			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
-//			    .initializer("$T.INSTANCE.getFlinkHost()", JFC.CLIENT_CONFIGURATION)
-			    .build();
-
-		FieldSpec flinkPort = FieldSpec.builder(int.class, "FLINK_PORT")
-			    .addModifiers(Modifier.PUBLIC, Modifier.FINAL, Modifier.STATIC)
-//			    .initializer("$T.INSTANCE.getFlinkPort()", JFC.CLIENT_CONFIGURATION)
-			    .build();
-
-		TypeSpec parameterClass = TypeSpec.classBuilder("Config").addModifiers(Modifier.PUBLIC)
-				.addField(jar).addField(flinkHost).addField(flinkPort).build();
-
-		return JavaFile.builder(packageName, parameterClass).build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/FlinkCodeGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/FlinkCodeGenerator.java
deleted file mode 100644
index 962c716..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/FlinkCodeGenerator.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-import org.streampipes.codegeneration.api.ImplementationCodeGenerator;
-import org.streampipes.codegeneration.flink.sepa.FlinkSepaControllerGenerator;
-import org.streampipes.codegeneration.utils.DirectoryBuilder;
-import org.streampipes.codegeneration.utils.JFC;
-
-import java.io.File;
-
-public abstract class FlinkCodeGenerator extends ImplementationCodeGenerator {
-	protected String packageName;
-	protected String name;
-	protected String version;
-	protected String port;
-	
-	protected String src;
-	protected String webInf;
-
-	public FlinkCodeGenerator(DeploymentConfiguration config, ConsumableStreamPipesEntity element) {
-		super(config, element);
-		packageName = config.getGroupId() + "." + config.getArtifactId();
-		name = config.getClassNamePrefix();
-		version = "0.40.3-SNAPSHOT";
-		port = Integer.toString(config.getPort());
-		
-		src = getTempDir() + "src" + File.separator + "main" + File.separator + "java" + File.separator;
-		webInf = getTempDir() + "src" + File.separator + "main" + File.separator + "webapp" + File.separator + "WEB-INF" + File.separator;
-
-	}
-
-	@Override
-	protected void createDirectoryStructure() {
-		String r = getTempDir(); 
-		String dirs[] = {r + "target/", src, r + "src/api/resources/", r + "src/test/", webInf};
-
-		boolean success = DirectoryBuilder.createDirectories(dirs);
-
-		if (!success) {
-			try {
-				throw new Exception("Couldn't create folder structure");
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	@Override
-	public String getDeclareModel() {
-		return new FlinkSepaControllerGenerator(element, name, packageName).getDeclareModelCode(JFC.SEPA_DESCRIPTION).build().toString();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/InitGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/InitGenerator.java
deleted file mode 100644
index 103d544..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/InitGenerator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.lang.model.element.Modifier;
-
-import com.squareup.javapoet.*;
-import com.squareup.javapoet.MethodSpec.Builder;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-
-public class InitGenerator extends Generator {
-
-	private boolean standalone;
-	public InitGenerator(ConsumableStreamPipesEntity sepa, String name, String packageName, boolean standalone) {
-		super(sepa, name, packageName);
-
-		this.standalone = standalone;
-	}
-
-	@Override
-	public JavaFile build() {
-		List<ClassName> controllers = new ArrayList<>();
-		controllers.add(ClassName.get("", name + "Controller"));
-
-		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Init").addModifiers(Modifier.PUBLIC)
-				.superclass(JFC.CONTAINER_MODEL_SUBMITTER).addMethod(getInit(controllers))
-				.build();
-		return JavaFile.builder(packageName, controllerClass).build();
-	}
-
-	private MethodSpec getInit(List<ClassName> controllers) {
-		Builder b = MethodSpec.methodBuilder("init").addAnnotation(Override.class).returns(TypeName.VOID)
-				.addModifiers(Modifier.PUBLIC);
-		b.addStatement("$T.getInstance().setRoute($S)", JFC.DECLARERS_SINGLETON, name.toLowerCase());
-		for (ClassName cn : controllers) {
-			b.addStatement("$T.getInstance().add(new $S())", JFC.DECLARERS_SINGLETON, cn);
-		}
-
-		return b.build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/XmlGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/XmlGenerator.java
deleted file mode 100644
index 0838b4d..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/XmlGenerator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink;
-
-import org.streampipes.codegeneration.utils.Utils;
-
-public class XmlGenerator {
-	private String name;
-	private String packageName;
-	private String version;
-
-	public XmlGenerator(String name, String packageName, String version) {
-		this.name = name;
-		this.packageName = packageName;
-		this.version = version;
-	}
-
-	public String getPomFile(boolean standalone) {
-		String pom = Utils.readResourceFile("pom");
-		pom = pom.replaceAll("####name####", name.toLowerCase());
-		pom = pom.replaceAll("####version####", version);
-		return pom;
-	}
-	
-	public String getWebXmlFile() {
-		String webXml = Utils.readResourceFile("web");
-		webXml = webXml.replace("####name####", packageName + ".Init");
-		return webXml;
-	}
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java
deleted file mode 100644
index df3a280..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecCodeGenerator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sec;
-
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-import org.streampipes.model.graph.DataSinkDescription;
-import org.streampipes.codegeneration.flink.ConfigGenerator;
-import org.streampipes.codegeneration.flink.FlinkCodeGenerator;
-import org.streampipes.codegeneration.flink.XmlGenerator;
-import org.streampipes.codegeneration.utils.Utils;
-
-public class FlinkSecCodeGenerator extends FlinkCodeGenerator {
-
-	public FlinkSecCodeGenerator(DeploymentConfiguration config, DataSinkDescription element) {
-		super(config, element);
-	}
-
-	@Override
-	protected void create() {
-		createDirectoryStructure();
-
-		// source files
-		Utils.writeToFile(new FlinkSecControllerGenerator(element, name, packageName).build(), src);
-		Utils.writeToFile(new FlinkSecProgramGenerator(element, name, packageName).build(), src);
-		Utils.writeToFile(new ConfigGenerator(element, name, packageName).build(), src);
-
-		// xml files
-		XmlGenerator xmlGenerator = new XmlGenerator(name, packageName, version);
-		Utils.writeToFile(xmlGenerator.getPomFile(true), getTempDir() + "pom.xml");
-		Utils.writeToFile(xmlGenerator.getWebXmlFile(), webInf + "web.xml");
-
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java
deleted file mode 100644
index 9ccc271..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecControllerGenerator.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sec;
-
-import javax.lang.model.element.Modifier;
-
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.MethodSpec.Builder;
-import com.squareup.javapoet.TypeSpec;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.codegeneration.ControllerGenerator;
-import org.streampipes.codegeneration.utils.JFC;
-
-public class FlinkSecControllerGenerator extends ControllerGenerator {
-	private ClassName program;
-	private ClassName config;
-
-	public FlinkSecControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-		program = ClassName.get(packageName, name + "Program");
-		config = ClassName.get(packageName, "Config");
-	}
-
-	public Builder isVisualizable() {
-		Builder b = MethodSpec.methodBuilder("isVisualizable").addAnnotation(Override.class)
-				.addModifiers(Modifier.PUBLIC).addStatement("return false").returns(boolean.class);
-
-		return b;
-	}
-
-	public Builder getHtml() {
-		Builder b = MethodSpec.methodBuilder("getHtml").addAnnotation(Override.class).addModifiers(Modifier.PUBLIC)
-				.addParameter(JFC.SEC_INVOCATION, "graph").addStatement("return null").returns(JFC.STRING);
-
-		return b;
-	}
-
-	public Builder getRuntime() {
-		Builder b = MethodSpec.methodBuilder("getRuntime").addAnnotation(Override.class)
-				.addModifiers(Modifier.PROTECTED).addParameter(DataSinkInvocation.class, "graph")
-				.addStatement("return new $T(graph, new $T($T.JAR_FILE, $T.FLINK_HOST, $T.FLINK_PORT))", program,
-						JFC.FLINK_DEPLOYMENT_CONFIG, config, config, config)
-				.returns(JFC.FLINK_SEC_RUNTIME);
-
-		return b;
-	}
-
-	@Override
-	public JavaFile build() {
-		MethodSpec declareModel = getDeclareModelCode(JFC.SEC_DESCRIPTION).build();
-		MethodSpec getRuntime = getRuntime().build();
-		MethodSpec isVisualizable = isVisualizable().build();
-		MethodSpec getHtml = getHtml().build();
-
-		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Controller").addModifiers(Modifier.PUBLIC)
-				.superclass(JFC.ABSTRACT_FLINK_CONSUMER_DECLARER).addMethod(declareModel).addMethod(isVisualizable)
-				.addMethod(getHtml).addMethod(getRuntime).build();
-
-		return JavaFile.builder(packageName, controllerClass).build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java
deleted file mode 100644
index bff4d42..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sec/FlinkSecProgramGenerator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sec;
-
-import java.io.Serializable;
-
-import javax.lang.model.element.Modifier;
-
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeSpec;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-
-public class FlinkSecProgramGenerator extends Generator {
-
-	public FlinkSecProgramGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-	}
-
-	@Override
-	public JavaFile build() {
-		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
-		ParameterizedTypeName dataStreamSink = ParameterizedTypeName.get(JFC.DATA_STREAM_SINK, mapStringObject);
-		ParameterizedTypeName dataStream = ParameterizedTypeName.get(JFC.DATA_STREAM, mapStringObject);
-
-		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(JFC.SEC_INVOCATION, "graph").addStatement("super(graph)").build();
-
-		MethodSpec constructorConfig = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(JFC.SEC_INVOCATION, "graph").addParameter(JFC.FLINK_DEPLOYMENT_CONFIG, "config")
-				.addStatement("super(graph, config)").build();
-
-		MethodSpec getApplicationLogic = MethodSpec.methodBuilder("getSink").addAnnotation(JFC.OVERRIDE)
-				.addModifiers(Modifier.PUBLIC).returns(dataStreamSink).addParameter(dataStream, "convertedStream")
-				.addCode("// TODO implement\nreturn null;\n").build();
-
-		TypeSpec programClass = TypeSpec.classBuilder(name + "Program").addModifiers(Modifier.PUBLIC)
-				.superclass(JFC.FLINK_SEC_RUNTIME).addSuperinterface(Serializable.class).addMethod(constructor)
-				.addMethod(constructorConfig).addMethod(getApplicationLogic).build();
-
-		return JavaFile.builder(packageName, programClass).build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java
deleted file mode 100644
index 6de2aff..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGenerator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sepa;
-
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.codegeneration.flink.ConfigGenerator;
-import org.streampipes.codegeneration.flink.FlinkCodeGenerator;
-import org.streampipes.codegeneration.flink.InitGenerator;
-import org.streampipes.codegeneration.flink.XmlGenerator;
-import org.streampipes.codegeneration.utils.Utils;
-
-public class FlinkSepaCodeGenerator extends FlinkCodeGenerator {
-
-	private boolean standalone;
-
-
-	public FlinkSepaCodeGenerator(DeploymentConfiguration config, DataProcessorDescription element, boolean standalone) {
-		super(config, element);
-		this.standalone = standalone;
-	}
-
-	@Override
-	protected void create() {
-		createDirectoryStructure();
-
-		// source files
-		Utils.writeToFile(new ParametersGenerator(element, name, packageName).build(), src);
-		Utils.writeToFile(new FlinkSepaControllerGenerator(element, name, packageName).build(), src);
-		Utils.writeToFile(new InitGenerator(element, name, packageName, standalone).build(), src);
-		Utils.writeToFile(new FlinkSepaProgramGenerator(element, name, packageName).build(), src);
-		Utils.writeToFile(new ConfigGenerator(element, name, packageName).build(), src);
-
-		// xml files
-		XmlGenerator xmlGenerator = new XmlGenerator(name, packageName, version);
-		Utils.writeToFile(xmlGenerator.getPomFile(standalone), getTempDir() + "pom.xml");
-		Utils.writeToFile(xmlGenerator.getWebXmlFile(), webInf + "web.xml");
-
-	}
-
-
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java
deleted file mode 100644
index 497e15e..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGenerator.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sepa;
-
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.MethodSpec.Builder;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeSpec;
-import org.streampipes.codegeneration.ControllerGenerator;
-import org.streampipes.codegeneration.utils.JFC;
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.model.staticproperty.FreeTextStaticProperty;
-import org.streampipes.model.staticproperty.MappingProperty;
-import org.streampipes.model.staticproperty.StaticProperty;
-
-import javax.lang.model.element.Modifier;
-
-public class FlinkSepaControllerGenerator extends ControllerGenerator {
-
-	private ClassName parameters;
-	private ClassName program;
-	private ClassName config;
-
-	public FlinkSepaControllerGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-		parameters = ClassName.get(packageName, name + "Parameters");
-		program = ClassName.get(packageName, name + "Program");
-		config = ClassName.get(packageName, "Config");
-	}
-
-	public Builder getRuntime() {
-		Builder b = MethodSpec.methodBuilder("getRuntime").addAnnotation(Override.class)
-				.addModifiers(Modifier.PROTECTED).addParameter(DataProcessorInvocation.class, "graph")
-				.returns(ParameterizedTypeName.get(JFC.FLINK_SEPA_RUNTIME, parameters));
-
-		
-		for (StaticProperty sp : element.getStaticProperties()) {
-			getStaticProperty(b, sp);
-		}
-
-		String staticParam = "$T staticParam = new $T(graph, ";
-		for (StaticProperty sp : element.getStaticProperties()) {
-			staticParam = staticParam + sp.getInternalName() + ", ";
-		}
-		staticParam = staticParam.subSequence(0, staticParam.length() - 2) + ")";
-		b.addStatement(staticParam, parameters, parameters);
-
-		b.addStatement("return new $T(staticParam, new $T($T.JAR_FILE, $T.FLINK_HOST, $T.FLINK_PORT))", program,
-				JFC.FLINK_DEPLOYMENT_CONFIG, config, config, config);
-
-		return b;
-	}
-
-	private Builder getStaticProperty(Builder b, StaticProperty sp) {
-		String name = sp.getInternalName().replaceAll("-", "_").replaceAll("/", "_");
-		if (sp instanceof MappingProperty) {
-			// TODO use SDK
-//			b.addStatement("String $L = $T.getMappingPropertyName(graph, $S)", name, JFC.SEPA_UTILS,
-//					sp.getInternalName());
-		} else if (sp instanceof FreeTextStaticProperty) {
-			// TODO use SDK
-//			b.addStatement("String $L = $T.getFreeTextStaticPropertyValue(graph, $S)", name, JFC.SEPA_UTILS,
-//					sp.getInternalName());
-		} else {
-			// TODO add implementation for the other strategies
-			try {
-				throw new Exception("Not yet Implemented");
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		}
-		return b;
-	}
-
-	@Override
-	public JavaFile build() {
-		MethodSpec declareModel = getDeclareModelCode(JFC.SEPA_DESCRIPTION).build();
-		MethodSpec getRuntime = getRuntime().build();
-
-		TypeSpec controllerClass = TypeSpec.classBuilder(name + "Controller").addModifiers(Modifier.PUBLIC)
-				.superclass(ParameterizedTypeName.get(JFC.ABSTRACT_FLINK_AGENT_DECLARER, parameters))
-				.addMethod(declareModel).addMethod(getRuntime).build();
-
-		return JavaFile.builder(packageName, controllerClass).build();
-	}
-
-	@Override
-	public String toString() {
-		return build().toString();
-	}
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java
deleted file mode 100644
index 47a649e..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGenerator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sepa;
-
-import javax.lang.model.element.Modifier;
-
-import com.squareup.javapoet.ClassName;
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeSpec;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-
-public class FlinkSepaProgramGenerator extends Generator {
-
-	public FlinkSepaProgramGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-	}
-
-	@Override
-	public JavaFile build() {
-		ClassName parameters = ClassName.get("", name + "Parameters");
-		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
-		ParameterizedTypeName d = ParameterizedTypeName.get(JFC.DATA_STREAM, mapStringObject);
-
-		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(parameters, "params").addStatement("super(params)").build();
-
-		MethodSpec constructorConfig = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(parameters, "params").addParameter(JFC.FLINK_DEPLOYMENT_CONFIG, "config")
-				.addStatement("super(params, config)").build();
-
-		MethodSpec getApplicationLogic = MethodSpec.methodBuilder("getApplicationLogic").addAnnotation(JFC.OVERRIDE)
-				.addModifiers(Modifier.PROTECTED).returns(d)
-				.addParameter(d, "messageStream")
-				.addCode("// TODO implement\nreturn messageStream;\n")
-				.build();
-
-		TypeSpec programClass = TypeSpec.classBuilder(name + "Program").addModifiers(Modifier.PUBLIC)
-				.superclass(ParameterizedTypeName.get(JFC.FLINK_SEPA_RUNTIME, parameters)).addMethod(constructor)
-				.addMethod(constructorConfig).addMethod(getApplicationLogic).build();
-
-		return JavaFile.builder(packageName, programClass).build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java
deleted file mode 100644
index b87efa9..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ImplementationGenerator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sepa;
-
-import javax.lang.model.element.Modifier;
-
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.ParameterizedTypeName;
-import com.squareup.javapoet.TypeName;
-import com.squareup.javapoet.TypeSpec;
-
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-
-public class ImplementationGenerator extends Generator {
-
-	public ImplementationGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-	}
-
-	@Override
-	public JavaFile build() {
-		ParameterizedTypeName mapStringObject = ParameterizedTypeName.get(JFC.MAP, JFC.STRING, JFC.OBJECT);
-
-		MethodSpec constructor = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(JFC.STRING, "propertyName").addStatement("this.$N = $N", "propertyName", "propertyName")
-				.build();
-
-		TypeName in = mapStringObject;
-		TypeName out = ParameterizedTypeName.get(JFC.COLLECTOR, mapStringObject);
-
-		MethodSpec flatMap = MethodSpec.methodBuilder("flatMap").addAnnotation(JFC.OVERRIDE).addModifiers(Modifier.PUBLIC)
-				.addParameter(in, "in").addParameter(out, "out").addException(JFC.EXCEPTION)
-				.addStatement("Object o = in.get(propertyName)").addCode("//TODO implement\n").build();
-
-		TypeSpec parameterClass = TypeSpec.classBuilder(name).addModifiers(Modifier.PUBLIC)
-				.addSuperinterface(ParameterizedTypeName.get(JFC.FLAT_MAP_FUNCTION, mapStringObject, mapStringObject))
-				.addField(JFC.STRING, "propertyName", Modifier.PRIVATE).addMethod(constructor).addMethod(flatMap).build();
-
-		return JavaFile.builder(packageName, parameterClass).build();
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ParametersGenerator.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ParametersGenerator.java
deleted file mode 100644
index 8f7a77d..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/flink/sepa/ParametersGenerator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.flink.sepa;
-
-import com.squareup.javapoet.JavaFile;
-import com.squareup.javapoet.MethodSpec;
-import com.squareup.javapoet.MethodSpec.Builder;
-import com.squareup.javapoet.TypeSpec;
-import org.streampipes.codegeneration.Generator;
-import org.streampipes.codegeneration.utils.JFC;
-import org.streampipes.codegeneration.utils.Utils;
-import org.streampipes.model.base.ConsumableStreamPipesEntity;
-import org.streampipes.model.staticproperty.StaticProperty;
-
-import javax.lang.model.element.Modifier;
-
-public class ParametersGenerator extends Generator {
-
-	public ParametersGenerator(ConsumableStreamPipesEntity element, String name, String packageName) {
-		super(element, name, packageName);
-	}
-
-	public MethodSpec getConstructor() {
-		Builder b = MethodSpec.constructorBuilder().addModifiers(Modifier.PUBLIC)
-				.addParameter(JFC.SEPA_INVOCATION, "graph").addStatement("super(graph)");
-
-		for (StaticProperty sp : element.getStaticProperties()) {
-			String internalNameCamelCased = Utils.toCamelCase(sp.getInternalName());
-			b.addParameter(JFC.STRING, internalNameCamelCased);
-			b.addStatement("this.$N = $N", internalNameCamelCased, internalNameCamelCased);
-		}
-
-		return b.build();
-
-	}
-	
-
-	@Override
-	public JavaFile build() {
-		MethodSpec constructor = getConstructor();
-
-		TypeSpec.Builder parameterClass = TypeSpec.classBuilder(name + "Parameters").addModifiers(Modifier.PUBLIC)
-				.superclass(JFC.EVENT_PROCESSOR_BINDING_PARAMS).addMethod(constructor);
-
-		for (StaticProperty sp : element.getStaticProperties()) {
-			String internalName = Utils.toCamelCase(sp.getInternalName());
-			parameterClass.addField(JFC.STRING, internalName, Modifier.PRIVATE);
-			MethodSpec getter = MethodSpec.methodBuilder(getterName(internalName)).addModifiers(Modifier.PUBLIC)
-				.returns(JFC.STRING).addStatement("return " + internalName).build();
-			parameterClass.addMethod(getter);
-		}
-
-
-		return JavaFile.builder(packageName, parameterClass.build()).build();
-	}
-
-	private String getterName(String s) {
-		String result = s;
-		if (s != null && s.length() > 0) {
-			char first = Character.toUpperCase(s.charAt(0));
-			result = "get" + first + s.substring(1);
-		}
-		
-		return result;
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/DirectoryBuilder.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/DirectoryBuilder.java
deleted file mode 100644
index 803dff8..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/DirectoryBuilder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.utils;
-
-import java.io.File;
-
-public abstract class DirectoryBuilder {
-	
-	/**
-	 * Use the / in the routes. It will be automatically replaced with File.seperator
-	 * @param dirs an array with directories that are created
-	 * @return whether the directory structure was created successfully 
-	 */
-	public static boolean createDirectories(String[] dirs) {
-		
-		for (String dir : dirs) {
-			if (!createDirectory(dir)) {
-				return false;
-			}
-		}
-
-		return true;
-	}
-
-	private static boolean createDirectory(String dir) {
-		String escapedSeparator = File.separator.equals("\\") ? "\\\\" : File.separator;
-		dir = dir.replaceAll("/", escapedSeparator);
-		if (dir != null) {
-			return (new File(dir)).mkdirs();
-		} else {
-			return false;
-		}
-	}
-
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/JFC.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/JFC.java
deleted file mode 100644
index 2aad2cf..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/JFC.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.utils;
-
-
-import com.squareup.javapoet.ClassName;
-import org.streampipes.container.init.DeclarersSingleton;
-import org.streampipes.container.util.StandardTransportFormat;
-import org.streampipes.model.SpDataStream;
-import org.streampipes.model.graph.DataProcessorInvocation;
-import org.streampipes.model.graph.DataSinkDescription;
-import org.streampipes.model.graph.DataSinkInvocation;
-import org.streampipes.model.output.AppendOutputStrategy;
-import org.streampipes.model.output.OutputStrategy;
-import org.streampipes.model.schema.EventProperty;
-import org.streampipes.sdk.helpers.EpProperties;
-import org.streampipes.sdk.stream.SchemaBuilder;
-import org.streampipes.sdk.stream.StreamBuilder;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Java File Classes (JFC)
- * @author philipp
- *
- */
-public abstract class JFC {
-
-	private static final String STREAMPIPES_MODEL_PACKAGE = "org.streampipes.model";
-	private static final String STREAMPIPES_MODEL_PACKAGE_GRAPH = STREAMPIPES_MODEL_PACKAGE + ".graph";
-
-	private static final String SP_FLINK_PACKAGE = "org.streampipes.wrapper.flink";
-	private static final String SP_WRAPPER_PACKAGE = "org.streampipes.wrapper";
-
-	public static ClassName MAP = ClassName.get(Map.class);
-	public static ClassName LIST = ClassName.get(List.class);
-	public static ClassName ARRAY_LIST = ClassName.get(ArrayList.class);
-
-	public static ClassName STRING = ClassName.get("", "String");
-	public static ClassName OVERRIDE = ClassName.get("", "Override");
-	public static ClassName OBJECT = ClassName.get("", "Object");
-	public static ClassName EXCEPTION = ClassName.get("", "Exception");
-
-	public static ClassName DATA_STREAM = ClassName.get("org.apache.flink.streaming.api.datastream", "DataStream");
-	public static ClassName DATA_STREAM_SINK = ClassName.get("org.apache.flink.streaming.api.datastream", "DataStreamSink");
-	public static ClassName FLAT_MAP_FUNCTION = ClassName.get("org.apache.flink.api.common.functions", "FlatMapFunction");
-	public static ClassName COLLECTOR = ClassName.get("org.apache.flink.util", "Collector");
-
-	public static ClassName SEPA_DESCRIPTION = ClassName.get(STREAMPIPES_MODEL_PACKAGE_GRAPH, "DataProcessorInvocation");
-	public static ClassName SEC_DESCRIPTION = ClassName.get(DataSinkDescription.class);
-	public static ClassName SEPA_INVOCATION = ClassName.get(DataProcessorInvocation.class);
-	public static ClassName SEC_INVOCATION = ClassName.get(DataSinkInvocation.class);
-	public static ClassName EVENT_STREAM = ClassName.get(SpDataStream.class);
-	public static ClassName STREAM_BUILDER = ClassName.get(StreamBuilder.class);
-	public static ClassName SCHEMA_BUILDER = ClassName.get(SchemaBuilder.class);
-	public static ClassName EVENT_PROPERTY = ClassName.get(EventProperty.class);
-	//public static ClassName PRIMITIVE_PROPERTY_BUILDER = ClassName.get(PrimitivePropertyBuilder
-	//				.class);
-	public static ClassName APPEND_OUTPUT_STRATEGY = ClassName.get(AppendOutputStrategy.class);
-	public static ClassName OUTPUT_STRATEGY = ClassName.get(OutputStrategy.class);
-	public static ClassName EP_PROPERTIES = ClassName.get(EpProperties.class);
-	public static ClassName STANDARD_TRANSPORT_FORMAT = ClassName.get(StandardTransportFormat.class);
-//	public static ClassName EMBEDDED_MODEL_SUBMITTER = ClassName.get("EmbeddedModelSubmitter.class);
-//	public static ClassName SEMANTIC_EVENT_PROCESSING_AGENT_DECLARER = ClassName.get(SemanticEventProcessingAgentDeclarer.class);
-//	public static ClassName SEMANTIC_EVENT_PRODUCER_DECLARER = ClassName.get(SemanticEventProducerDeclarer.class);
-//	public static ClassName SEMANTIC_EVENT_CONSUMER_DECLARER = ClassName.get(SemanticEventConsumerDeclarer.class);
-
-	public static ClassName CONTAINER_MODEL_SUBMITTER = ClassName.get("de.fzi.cep.sepa.client.container.init", "ContainerModelSubmitter");
-	public static ClassName DECLARERS_SINGLETON = ClassName.get(DeclarersSingleton.class);
-
-
-
-	public static ClassName FLINK_DEPLOYMENT_CONFIG = ClassName.get(SP_FLINK_PACKAGE, "FlinkDeploymentConfig");
-	public static ClassName FLINK_SEPA_RUNTIME =  ClassName.get(SP_FLINK_PACKAGE, "FlinkDataProcessorRuntime");
-	public static ClassName FLINK_SEC_RUNTIME = ClassName.get(SP_FLINK_PACKAGE, "FlinkDataSinkRuntime");
-	public static ClassName ABSTRACT_FLINK_AGENT_DECLARER =  ClassName.get(SP_FLINK_PACKAGE, "FlinkDataProcessorDeclarer");
-	public static ClassName ABSTRACT_FLINK_CONSUMER_DECLARER =  ClassName.get(SP_FLINK_PACKAGE, "DataSinkDeclarer");
-
-	public static ClassName EVENT_PROCESSOR_BINDING_PARAMS = ClassName.get(SP_WRAPPER_PACKAGE +".params.binding", "EventProcessorBindingParams");
-}
diff --git a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/Utils.java b/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/Utils.java
deleted file mode 100644
index 813035e..0000000
--- a/streampipes-code-generation/src/main/java/org/streampipes/codegeneration/utils/Utils.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.utils;
-
-import com.google.common.base.CaseFormat;
-import com.squareup.javapoet.JavaFile;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-
-public class Utils {
-
-  private static final String PROPERTY_SEPARATOR = "-";
-  private static final Logger LOG = LoggerFactory.getLogger(Utils.class);
-
-  public static String readResourceFile(String fileName) {
-
-    StringBuilder sb = new StringBuilder();
-    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-
-    InputStream input = classLoader.getResourceAsStream(fileName);
-    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
-    String line;
-    try {
-      while ((line = reader.readLine()) != null) {
-        sb.append(line);
-        sb.append("\n");
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-
-    return sb.toString();
-  }
-
-  public static String readFile(String fileName) {
-    BufferedReader br = null;
-
-    try {
-      br = new BufferedReader(new FileReader(fileName));
-      StringBuilder sb = new StringBuilder();
-      String line = br.readLine();
-
-      while (line != null) {
-        sb.append(line);
-        sb.append("\n");
-        line = br.readLine();
-      }
-      return sb.toString();
-    } catch (FileNotFoundException e) {
-      e.printStackTrace();
-    } catch (IOException e) {
-      e.printStackTrace();
-    } finally {
-      try {
-        br.close();
-      } catch (IOException e) {
-        e.printStackTrace();
-      }
-    }
-
-    return "Couldn't read file: " + fileName;
-  }
-
-  public static void writeToFile(String content, String file) {
-    Path path = Paths.get(file);
-    byte[] b = content.getBytes();
-    try {
-      Files.write(path, b);
-    } catch (IOException e) {
-      LOG.error("Could not write to file", e);
-    }
-  }
-
-  public static void writeToFile(JavaFile content, String location) {
-    try {
-      content.writeTo(new File(location));
-    } catch (IOException e) {
-      e.printStackTrace();
-      LOG.error("Error: Could not write to file: {}", location, e);
-    }
-  }
-
-  public static String toCamelCase(String propertyName) {
-    if (propertyName.contains("-")) {
-      return CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, propertyName);
-    } else {
-      return propertyName;
-    }
-
-  }
-
-
-}
diff --git a/streampipes-code-generation/src/main/resources/pom b/streampipes-code-generation/src/main/resources/pom
index edd035a..28ac60d 100644
--- a/streampipes-code-generation/src/main/resources/pom
+++ b/streampipes-code-generation/src/main/resources/pom
@@ -2,7 +2,7 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<artifactId>####name####</artifactId>
-	<groupId>org.streampipes</groupId>
+	<groupId>org.apache.streampipes</groupId>
 	<version>####version####</version>
 	<packaging>war</packaging>
 
@@ -23,27 +23,27 @@
 
 	<dependencies>
 		<dependency>
-			<groupId>org.streampipes</groupId>
+			<groupId>org.apache.streampipes</groupId>
 			<artifactId>streampipes-container</artifactId>
 			<version>####version####</version>
 		</dependency>
 		<dependency>
-			<groupId>org.streampipes</groupId>
+			<groupId>org.apache.streampipes</groupId>
 			<artifactId>semantic-container-standalone</artifactId>
 			<version>####version####</version>
 		</dependency>
 		<dependency>
-			<groupId>org.streampipes</groupId>
+			<groupId>org.apache.streampipes</groupId>
 			<artifactId>streampipes-commons</artifactId>
 			<version>####version####</version>
 		</dependency>
 		<dependency>
-			<groupId>org.streampipes</groupId>
+			<groupId>org.apache.streampipes</groupId>
 			<artifactId>streampipes-wrapper-flink</artifactId>
 			<version>####version####</version>
 		</dependency>
 		<dependency>
-        	<groupId>org.streampipes</groupId>
+        	<groupId>org.apache.streampipes</groupId>
         	<artifactId>streampipes-sdk</artifactId>
         	<version>####version####</version>
         </dependency>
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/AllTests.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/AllTests.java
new file mode 100644
index 0000000..7309296
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/AllTests.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration;
+//@RunWith(Suite.class)
+//@SuiteClasses({ FlinkSepaControllerGeneratorTest.class, UtilsTest.class, InitGeneratorTest.class,
+//		XmlGeneratorTest.class, FlinkSepaProgramGeneratorTest.class, ImplementationGeneratorTest.class,
+//		ParametersGeneratorTest.class, ConfigGeneratorTest.class, DirectoryBuilderTest.class,
+//		FlinkSecControllerGeneratorTest.class, FlinkSecProgramGeneratorTest.class})
+//public class AllTests {
+//
+//}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/ControllerGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/ControllerGeneratorTest.java
new file mode 100644
index 0000000..9e8f019
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/ControllerGeneratorTest.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration;
+
+import static org.junit.Assert.assertEquals;
+
+public class ControllerGeneratorTest {
+
+//	@Test
+//	public void testGetEventStream() {
+//
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		EventStream eventStream = StreamBuilder.createStream(TV.NAME, TV.DESCRIPTION, TV.PATH_NAME)
+//				.schema(SchemaBuilder.create().build()).build();
+//
+//		Builder actual = cb.getEventStream(b, eventStream, 0);
+//		String expected = "void testMethod() {\n  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> eventProperties0 = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
+//				+ "  de.fzi.cep.sepa.model.impl.EventStream stream0 = de.fzi.cep.sepa.model.builder.StreamBuilder.createStream(\"TestProject\", \"Example description\", \"sepa/testProject\").schema(de.fzi.cep.sepa.model.builder.SchemaBuilder.create().properties(eventProperties0).build()).build();\n}\n";
+//
+//		//TODO fix test
+////		assertEquals(expected, actual.build().toString());
+//	}
+//
+//	@Test
+//	public void testGetEventProperties() {
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
+//		eventProperties.add(PrimitivePropertyBuilder.createPropertyRestriction("http://test.org#mytest").build());
+//
+//		String actual = cb.getEventProperties(b, eventProperties, 0).build().toString();
+//		String expected = "void testMethod() {\n  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> eventProperties0 = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
+//				+ "  de.fzi.cep.sepa.model.impl.eventproperty.EventProperty e0 = de.fzi.cep.sepa.model.builder.PrimitivePropertyBuilder.createPropertyRestriction(\"http://test.org#mytest\").build();\n"
+//				+ "  eventProperties0.add(e0);\n}\n";
+//
+//		//TODO fix test
+////		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testAppendGetOutputStrategyWithNoEventProperty() {
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//
+//		AppendOutputStrategy appendStrategy = new AppendOutputStrategy();
+//
+//		String actual = cb.getAppendOutputStrategy(b, appendStrategy, 0).build().toString();
+//		String expected = "void testMethod() {\n"
+//				+ "  de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy outputStrategy0 = new de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy();\n"
+//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> appendProperties = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
+//				+ "  outputStrategy0.setEventProperties(appendProperties);\n" + "}\n";
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testAppendGetOutputStrategyWithEventProperties() {
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//
+//		AppendOutputStrategy appendStrategy = new AppendOutputStrategy();
+//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
+//		eventProperties.add(new EventPropertyPrimitive(XSD._long.toString(), "testTime", "",
+//				Utils.createURI("http://schema.org/Number")));
+//		appendStrategy.setEventProperties(eventProperties);
+//
+//		String actual = cb.getAppendOutputStrategy(b, appendStrategy, 0).build().toString();
+//		String expected = "void testMethod() {\n"
+//				+ "  de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy outputStrategy0 = new de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy();\n"
+//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> appendProperties = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
+//				+ "  appendProperties.add(de.fzi.cep.sepa.model.builder.EpProperties.stringEp(\"testTime\", \"http://schema.org/Number\"));\n"
+//				+ "  outputStrategy0.setEventProperties(appendProperties);\n" + "}\n";
+//
+//		//TODO fixtest
+////		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testGetOutputStrategies() {
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//
+//		List<OutputStrategy> strategies = new ArrayList<OutputStrategy>();
+//
+//		String actual = cb.getOutputStrategies(b, strategies).build().toString();
+//		String expected = "void testMethod() {\n"
+//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.output.OutputStrategy> strategies = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.output.OutputStrategy>();\n"
+//				+ "}\n";
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testGetSupportedGrounding() {
+//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
+//		Builder b = MethodSpec.methodBuilder("testMethod");
+//
+//		String actual = cb.getSupportedGrounding(b, null).build().toString();
+//		String expected = "void testMethod() {\n"
+//				+ "  desc.setSupportedGrounding(de.fzi.cep.sepa.client.util.StandardTransportFormat.getSupportedGrounding());\n"
+//				+ "}\n";
+//
+//		assertEquals(expected, actual);
+//	}
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/TestDeployment.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/TestDeployment.java
new file mode 100644
index 0000000..f577dc2
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/TestDeployment.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.codegeneration;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+import org.apache.streampipes.codegeneration.api.CodeGenerator;
+import org.apache.streampipes.model.client.deployment.DeploymentConfiguration;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.serializers.json.GsonSerializer;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
+public class TestDeployment {
+
+  public static void main(String[] args) {
+    DeploymentConfiguration deploymentConfiguration = GsonSerializer.getGsonWithIds().fromJson(fromResources("DeploymentConfig.json"), DeploymentConfiguration.class);
+    DataProcessorDescription dataProcessorDescription = GsonSerializer.getGsonWithIds().fromJson(fromResources("Entity.json"), DataProcessorDescription.class);
+
+    File f = CodeGenerator.getCodeGenerator(deploymentConfiguration, dataProcessorDescription).getGeneratedFile();
+  }
+
+  private static String fromResources(String filename) {
+    URL url = Resources.getResource(filename);
+    try {
+      return Resources.toString(url, Charsets.UTF_8);
+    } catch (IOException e) {
+      e.printStackTrace();
+      return "";
+    }
+  }
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/api/CodeGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/api/CodeGeneratorTest.java
new file mode 100644
index 0000000..8d0bb9f
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/api/CodeGeneratorTest.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.api;
+
+public class CodeGeneratorTest {
+//    @Test
+//    public void getGeneratorImplementationFlinkSepaStandalone() throws Exception {
+//        DeploymentConfiguration config = new DeploymentConfiguration();
+//        config.setOutputType(OutputType.IMPLEMENTATION);
+//        config.setRuntimeType(RuntimeType.FLINK);
+//        config.setDeploymentType(DeploymentType.STANDALONE);
+//
+//        assertThat(CodeGenerator.getCodeGenerator(config, new SepaDescription()),instanceOf(FlinkSepaCodeGenerator.class));
+//    }
+
+}
\ No newline at end of file
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/ConfigGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/ConfigGeneratorTest.java
new file mode 100644
index 0000000..1b81cee
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/ConfigGeneratorTest.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+public class ConfigGeneratorTest {
+
+//	@Test
+//	public void testBuild() {
+//		String actual = new ConfigGenerator(null, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_Config_java");
+//		// TODO fix test
+////		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/InitGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/InitGeneratorTest.java
new file mode 100644
index 0000000..091d9ba
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/InitGeneratorTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+import static org.junit.Assert.assertEquals;
+
+public class InitGeneratorTest {
+
+//	@Test
+//	public void testBuild() {
+//		String actual = new InitGenerator(null, TV.NAME, TV.PACKAGE_NAME, true).build().toString();
+//		String expected = Utils.readResourceFile("expected_Init_java");
+//
+//		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/XmlGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/XmlGeneratorTest.java
new file mode 100644
index 0000000..2d3352e
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/XmlGeneratorTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink;
+
+public class XmlGeneratorTest {
+
+//	@Test
+//	public void testGetPom() {
+//		String actual = new XmlGenerator(TV.NAME, "", "0.0.1-SNAPSHOT").getPomFile(true);
+//		String expected = Utils.readResourceFile("expected_pom_xml");
+//
+//		//TODO fix test
+////		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testGetWebXmlFile() {
+//		String actual = new XmlGenerator("", TV.PACKAGE_NAME, "").getWebXmlFile();
+//		String expected = Utils.readResourceFile("expected_web_xml");
+//
+//		assertEquals(expected, actual);
+//
+//	}
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGeneratorTest.java
new file mode 100644
index 0000000..f02d676
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecCodeGeneratorTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+public class FlinkSecCodeGeneratorTest {
+
+//	@Test
+//	public void testCreateProject() {
+//		DeploymentConfiguration con = new DeploymentConfiguration("com.example.com", "time", "TimeStamp", 8080);
+//		SecDescription sec = TV.getSecDescription();
+//
+//		ImplementationCodeGenerator cg = new FlinkSecCodeGenerator(con, sec);
+//
+//		cg.createProject();
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGeneratorTest.java
new file mode 100644
index 0000000..b6e9401
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecControllerGeneratorTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+import static org.junit.Assert.assertEquals;
+
+public class FlinkSecControllerGeneratorTest {
+
+//	@Test
+//	public void testIsVisualizable() {
+//		SecDescription sec = TV.getSecDescription();
+//		FlinkSecControllerGenerator cd = new FlinkSecControllerGenerator(sec, TV.NAME, TV.PACKAGE_NAME);
+//
+//		String actual = cd.isVisualizable().build().toString();
+//		String expected = "@java.lang.Override\n" +
+//			"public boolean isVisualizable() {\n" +
+//			"  return false;\n"
+//			+ "}\n";
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testGetHtml() {
+//		SecDescription sec = TV.getSecDescription();
+//		FlinkSecControllerGenerator cd = new FlinkSecControllerGenerator(sec, TV.NAME, TV.PACKAGE_NAME);
+//
+//		String actual = cd.getHtml().build().toString();
+//		String expected = "@java.lang.Override\n" +
+//			"public String getHtml(de.fzi.cep.sepa.model.impl.graph.SecInvocation graph) {\n" +
+//			"  return null;\n"
+//			+ "}\n";
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testBuild() {
+//
+//		SecDescription sec = TV.getSecDescription();
+//
+//		String actual = new FlinkSecControllerGenerator(sec, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_FlinkSecController_java");
+//
+//		//TODO Fix test
+////		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGeneratorTest.java
new file mode 100644
index 0000000..d736d9f
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sec/FlinkSecProgramGeneratorTest.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sec;
+
+public class FlinkSecProgramGeneratorTest {
+	
+//	@Test
+//	public void testBuild() {
+//
+//		SecDescription sec = TV.getSecDescription();
+//
+//		String actual = new FlinkSecProgramGenerator(sec, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_FlinkSecProgram_java");
+//
+//		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGeneratorTest.java
new file mode 100644
index 0000000..1ab129e
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaCodeGeneratorTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+public class FlinkSepaCodeGeneratorTest {
+//
+//	@Test
+//	public void testCreateProject() {
+//		DeploymentConfiguration con = new DeploymentConfiguration("com.example.com", "time", "TimeStamp", 8080);
+//		SepaDescription sepa = TV.getSepa();
+//
+//		ImplementationCodeGenerator cg = new FlinkSepaCodeGenerator(con, sepa, true);
+//
+//		cg.createProject();
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGeneratorTest.java
new file mode 100644
index 0000000..12215c3
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaControllerGeneratorTest.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+public class FlinkSepaControllerGeneratorTest {
+
+//
+//	@Test
+//	public void testGetRuntime() {
+//		SepaDescription sepa = TV.getSepa();
+//		FlinkSepaControllerGenerator cd = new FlinkSepaControllerGenerator(sepa, TV.NAME, TV.PACKAGE_NAME);
+//
+//		String actual = cd.getRuntime().build().toString();
+//		String expected = "@java.lang.Override\n"
+//				+ "protected de.fzi.cep.sepa.flink.FlinkSepaRuntime<de.fzi.cep.sepa.flink.test.project.TestProjectParameters> getRuntime(de.fzi.cep.sepa.model.impl.graph.SepaInvocation graph) {\n"
+//				+ "  String mappingFirst = de.fzi.cep.sepa.model.util.SepaUtils.getMappingPropertyName(graph, \"mappingFirst\");\n" +
+//				"  String freeText = de.fzi.cep.sepa.model.util.SepaUtils.getFreeTextStaticPropertyValue(graph, \"freeText\");\n"
+//				+ "  de.fzi.cep.sepa.flink.test.project.TestProjectParameters staticParam = new de.fzi.cep.sepa.flink.test.project.TestProjectParameters(graph, mappingFirst, freeText);\n"
+//				+ "  return new " + TV.PACKAGE_NAME +"."+ TV.NAME
+//				+ "Program(staticParam, new de.fzi.cep.sepa.flink.FlinkDeploymentConfig(" + TV.PACKAGE_NAME
+//				+ ".Config.JAR_FILE, " + TV.PACKAGE_NAME + ".Config.FLINK_HOST, " + TV.PACKAGE_NAME
+//				+ ".Config.FLINK_PORT));\n"
+//				+ "}\n";
+//
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testBuild() {
+//		SepaDescription sepa = new SepaDescription(TV.PATH_NAME, TV.NAME, TV.DESCRIPTION);
+//		List<EventProperty> eventProperties0 = new ArrayList<EventProperty>();
+//		eventProperties0.add(PrimitivePropertyBuilder.createPropertyRestriction("http://test.org#mytest").build());
+//		EventStream es = StreamBuilder.createStream(TV.PATH_NAME, TV.NAME, TV.DESCRIPTION)
+//				.schema(SchemaBuilder.create().properties(eventProperties0).build()).build();
+//		sepa.addEventStream(es);
+//
+//		List<OutputStrategy> strategies = new ArrayList<OutputStrategy>();
+//		AppendOutputStrategy outputStrategy = new AppendOutputStrategy();
+//		strategies.add(outputStrategy);
+//		sepa.setOutputStrategies(strategies);
+//
+//		// TODO remove after I got the answer from Dominik what the difference between uri and pathName is
+//		sepa.setUri(TV.PATH_NAME);
+//
+//		String actual = new FlinkSepaControllerGenerator(sepa, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_FlinkSepaController_java");
+//
+//		//TODO fix tests again
+////		assertEquals(expected, actual);
+//	}
+
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGeneratorTest.java
new file mode 100644
index 0000000..7d81f3c
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/FlinkSepaProgramGeneratorTest.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+public class FlinkSepaProgramGeneratorTest {
+
+//	@Test
+//	public void testBuild() {
+//		String actual = new FlinkSepaProgramGenerator(null, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_FlinkSepaProgram_java");
+//		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGeneratorTest.java
new file mode 100644
index 0000000..242784f
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ImplementationGeneratorTest.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+public class ImplementationGeneratorTest {
+//
+//	@Test
+//	public void testBuild() {
+//		String actual = new ImplementationGenerator(null, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_TestProject_java");
+//		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGeneratorTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGeneratorTest.java
new file mode 100644
index 0000000..feac8bc
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/flink/sepa/ParametersGeneratorTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.flink.sepa;
+
+public class ParametersGeneratorTest {
+//
+//	@Test
+//	public void testBuild() {
+//		SepaDescription desc = new SepaDescription(TV.PATH_NAME, TV.NAME, TV.DESCRIPTION);
+//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
+//		EventProperty e1 = PrimitivePropertyBuilder.createPropertyRestriction("http://test.org#test1").build();
+//		eventProperties.add(e1);
+//
+//		EventStream stream1 = StreamBuilder
+//				.createStreamRestriction("localhost/" + TV.PATH_NAME)
+//				.schema(
+//						SchemaBuilder.create()
+//							.properties(eventProperties)
+//							.build()
+//						).build();
+//		desc.addEventStream(stream1);
+//
+//
+//		List<StaticProperty> staticProperties = new ArrayList<StaticProperty>();
+//		staticProperties.add(new MappingPropertyUnary(URI.create(e1.getElementName()), "mappingFirst",
+//				"Mapping First: ", ""));
+//		staticProperties.add(new FreeTextStaticProperty("freeText", "Free Text: ", ""));
+//
+//		desc.setStaticProperties(staticProperties);
+//		String actual = new ParametersGenerator(desc, TV.NAME, TV.PACKAGE_NAME).build().toString();
+//		String expected = Utils.readResourceFile("expected_TestProjectParameters_java");
+//		assertEquals(expected, actual);
+//	}
+
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilderTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilderTest.java
new file mode 100644
index 0000000..c31a334
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/DirectoryBuilderTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+public class DirectoryBuilderTest {
+  private static String root = System.getProperty("java.io.tmpdir") + "/StreampipesTest/";
+
+//	@Test
+//	public void testCreateDirectories() {
+//		String[] dirs = { root + "test/", root + "test/test", root + "my/new/directory" };
+//
+//		assertTrue("Could not create the directory structure", DirectoryBuilder.createDirectories(dirs));
+//
+//		for (String dir : dirs) {
+//			assertTrue(dir + " was not created", isDir(dir));
+//		}
+//	}
+//
+//	private boolean isDir(String dir) {
+//		File f = new File(dir);
+//		return f.exists() && f.isDirectory();
+//	}
+//
+//	@Before
+//	public void before() {
+//		try {
+//			FileUtils.deleteDirectory(new File(root));
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+//	}
+//
+//	@After
+//	public void after() {
+//		try {
+//			FileUtils.deleteDirectory(new File(root));
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+//	}
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/TV.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/TV.java
new file mode 100644
index 0000000..646c4a9
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/TV.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+/**
+ * Test Variables (TV)
+ * 
+ * @author philipp
+ *
+ */
+public abstract class TV {
+	public static String NAME = "TestProject";
+	public static String PATH_NAME = "sepa/testProject";
+	public static String DESCRIPTION = "Example description";
+	public static String PACKAGE_NAME = "de.fzi.cep.sepa.flink.test.project";
+
+//	public static SepaDescription getSepa() {
+//		SepaDescription sepa = new SepaDescription(TV.PATH_NAME, TV.NAME, TV.DESCRIPTION);
+//
+//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
+//		EventProperty e1 = PrimitivePropertyBuilder.createPropertyRestriction("http://test.org#test1").build();
+//		eventProperties.add(e1);
+//
+//		EventStream stream1 = StreamBuilder.createStreamRestriction("localhost/sepa/testproject")
+//				.schema(SchemaBuilder.create().properties(eventProperties).build()).build();
+//		sepa.addEventStream(stream1);
+//
+//		List<OutputStrategy> strategies = new ArrayList<OutputStrategy>();
+//		AppendOutputStrategy outputStrategy = new AppendOutputStrategy();
+//		List<EventProperty> appendProperties = new ArrayList<EventProperty>();
+//		appendProperties.add(new EventPropertyPrimitive(XSD._long.toString(), "appendedTime", "",
+//				org.apache.streampipes.commons.Utils.createURI("http://schema.org/Number")));
+//		outputStrategy.setEventProperties(appendProperties);
+//		strategies.add(outputStrategy);
+//		sepa.setOutputStrategies(strategies);
+//
+//		List<StaticProperty> staticProperties = new ArrayList<StaticProperty>();
+//		staticProperties
+//				.add(new MappingPropertyUnary(URI.create(e1.getElementName()), "mappingFirst", "Mapping First: ", ""));
+//		staticProperties.add(new FreeTextStaticProperty("freeText", "Free Text: ", ""));
+//
+//		sepa.setStaticProperties(staticProperties);
+//
+//		return sepa;
+//	}
+//
+//	public static SecDescription getSecDescription() {
+//		SecDescription sec = new SecDescription(TV.PATH_NAME, TV.NAME, TV.DESCRIPTION);
+//		sec.setUri(TV.PATH_NAME);
+//		EventStream stream1 = new EventStream();
+//		EventSchema schema1 = new EventSchema();
+//
+//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
+////		EventProperty e1 = EpRequirements.numberReq();
+////		eventProperties.add(e1);
+//		schema1.setEventProperties(eventProperties);
+//		stream1.setEventSchema(schema1);
+//
+//		stream1.setUri("localhost:8080/" + TV.PATH_NAME);
+//		sec.addEventStream(stream1);
+//
+//		List<StaticProperty> staticProperties = new ArrayList<StaticProperty>();
+//		// staticProperties.add(new FreeTextStaticProperty("min", "min value",
+//		// ""));
+//		// staticProperties.add(new FreeTextStaticProperty("max", "max value",
+//		// ""));
+//		// staticProperties.add(new FreeTextStaticProperty("color", "Color of
+//		// the cirlce", ""));
+//
+//		// staticProperties.add(new
+//		// MappingPropertyUnary(URI.create(e1.getElementId()), "mapping",
+//		// "Select Mapping", ""));
+//
+//		sec.setStaticProperties(staticProperties);
+//		EventGrounding grounding = new EventGrounding();
+//		grounding.setTransportFormats(Arrays.asList(new TransportFormat(MessageFormat.Json)));
+//		grounding.setTransportProtocols(Arrays.asList(new JmsTransportProtocol()));
+//		sec.setSupportedGrounding(grounding);
+//
+//		return sec;
+//	}
+}
diff --git a/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/UtilsTest.java b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/UtilsTest.java
new file mode 100644
index 0000000..f2264df
--- /dev/null
+++ b/streampipes-code-generation/src/test/java/org/apache/streampipes/codegeneration/utils/UtilsTest.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.codegeneration.utils;
+
+import java.io.File;
+
+public class UtilsTest {
+	private static File temp;
+//
+//	@BeforeClass
+//	public static void beforeClass() {
+//		temp = Files.createTempDir();
+//	}
+//
+//	@AfterClass
+//	public static void afterClass() {
+//		try {
+//			FileUtils.deleteDirectory(temp);
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+//	}
+//
+//	@Test
+//	public void testWriteToFileJavaFile() {
+//		JavaFile jf = JavaFile.builder("test", TypeSpec.classBuilder("Test").build()).build();
+//		Utils.writeToFile(jf, temp.toString());
+//
+//		File f = new File(temp.getAbsolutePath() + "/test/Test.java");
+//		assertTrue("File Test.java wasn't created", f.exists());
+//		assertFalse("Test.jave is a directory but should be a file", f.isDirectory());
+//
+//		String actual = Utils.readFile(f.getAbsolutePath());
+//		assertEquals("package test;\n\nclass Test {\n}\n", actual);
+//
+//	}
+//
+//	@Test
+//	public void testWriteToFileString() {
+//		String expected = "Thist is a test file!";
+//		File file = new File(temp.getAbsolutePath() + "/testFile1");
+//
+//		Utils.writeToFile(expected, file.getAbsolutePath());
+//
+//		String actual = Utils.readFile(file.getAbsolutePath());
+//
+//		assertEquals(expected, actual.trim());
+//	}
+//
+//	@Test
+//	public void testToCamelCaseNoSpecialCharacter() {
+//		String expected = "testCamelCase";
+//		String actual = Utils.toCamelCase("testCamelCase");
+//
+//		assertEquals(expected, actual);
+//	}
+//
+//	@Test
+//	public void testToCamelCaseWithSpecialCharacter() {
+//		String expected = "testCamelCase";
+//		String actual = Utils.toCamelCase("test-camel-case");
+//
+//		assertEquals(expected, actual);
+//	}
+}
diff --git a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/AllTests.java b/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/AllTests.java
deleted file mode 100644
index 38f81a2..0000000
--- a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/AllTests.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration;
-//@RunWith(Suite.class)
-//@SuiteClasses({ FlinkSepaControllerGeneratorTest.class, UtilsTest.class, InitGeneratorTest.class,
-//		XmlGeneratorTest.class, FlinkSepaProgramGeneratorTest.class, ImplementationGeneratorTest.class,
-//		ParametersGeneratorTest.class, ConfigGeneratorTest.class, DirectoryBuilderTest.class,
-//		FlinkSecControllerGeneratorTest.class, FlinkSecProgramGeneratorTest.class})
-//public class AllTests {
-//
-//}
diff --git a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/ControllerGeneratorTest.java b/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/ControllerGeneratorTest.java
deleted file mode 100644
index 89bbf06..0000000
--- a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/ControllerGeneratorTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration;
-
-import static org.junit.Assert.assertEquals;
-
-public class ControllerGeneratorTest {
-
-//	@Test
-//	public void testGetEventStream() {
-//
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		EventStream eventStream = StreamBuilder.createStream(TV.NAME, TV.DESCRIPTION, TV.PATH_NAME)
-//				.schema(SchemaBuilder.create().build()).build();
-//
-//		Builder actual = cb.getEventStream(b, eventStream, 0);
-//		String expected = "void testMethod() {\n  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> eventProperties0 = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
-//				+ "  de.fzi.cep.sepa.model.impl.EventStream stream0 = de.fzi.cep.sepa.model.builder.StreamBuilder.createStream(\"TestProject\", \"Example description\", \"sepa/testProject\").schema(de.fzi.cep.sepa.model.builder.SchemaBuilder.create().properties(eventProperties0).build()).build();\n}\n";
-//
-//		//TODO fix test
-////		assertEquals(expected, actual.build().toString());
-//	}
-//
-//	@Test
-//	public void testGetEventProperties() {
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
-//		eventProperties.add(PrimitivePropertyBuilder.createPropertyRestriction("http://test.org#mytest").build());
-//
-//		String actual = cb.getEventProperties(b, eventProperties, 0).build().toString();
-//		String expected = "void testMethod() {\n  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> eventProperties0 = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
-//				+ "  de.fzi.cep.sepa.model.impl.eventproperty.EventProperty e0 = de.fzi.cep.sepa.model.builder.PrimitivePropertyBuilder.createPropertyRestriction(\"http://test.org#mytest\").build();\n"
-//				+ "  eventProperties0.add(e0);\n}\n";
-//
-//		//TODO fix test
-////		assertEquals(expected, actual);
-//	}
-//
-//	@Test
-//	public void testAppendGetOutputStrategyWithNoEventProperty() {
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//
-//		AppendOutputStrategy appendStrategy = new AppendOutputStrategy();
-//
-//		String actual = cb.getAppendOutputStrategy(b, appendStrategy, 0).build().toString();
-//		String expected = "void testMethod() {\n"
-//				+ "  de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy outputStrategy0 = new de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy();\n"
-//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> appendProperties = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
-//				+ "  outputStrategy0.setEventProperties(appendProperties);\n" + "}\n";
-//
-//		assertEquals(expected, actual);
-//	}
-//
-//	@Test
-//	public void testAppendGetOutputStrategyWithEventProperties() {
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//
-//		AppendOutputStrategy appendStrategy = new AppendOutputStrategy();
-//		List<EventProperty> eventProperties = new ArrayList<EventProperty>();
-//		eventProperties.add(new EventPropertyPrimitive(XSD._long.toString(), "testTime", "",
-//				Utils.createURI("http://schema.org/Number")));
-//		appendStrategy.setEventProperties(eventProperties);
-//
-//		String actual = cb.getAppendOutputStrategy(b, appendStrategy, 0).build().toString();
-//		String expected = "void testMethod() {\n"
-//				+ "  de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy outputStrategy0 = new de.fzi.cep.sepa.model.impl.output.AppendOutputStrategy();\n"
-//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty> appendProperties = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.eventproperty.EventProperty>();\n"
-//				+ "  appendProperties.add(de.fzi.cep.sepa.model.builder.EpProperties.stringEp(\"testTime\", \"http://schema.org/Number\"));\n"
-//				+ "  outputStrategy0.setEventProperties(appendProperties);\n" + "}\n";
-//
-//		//TODO fixtest
-////		assertEquals(expected, actual);
-//	}
-//
-//	@Test
-//	public void testGetOutputStrategies() {
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//
-//		List<OutputStrategy> strategies = new ArrayList<OutputStrategy>();
-//
-//		String actual = cb.getOutputStrategies(b, strategies).build().toString();
-//		String expected = "void testMethod() {\n"
-//				+ "  java.util.List<de.fzi.cep.sepa.model.impl.output.OutputStrategy> strategies = new java.util.ArrayList<de.fzi.cep.sepa.model.impl.output.OutputStrategy>();\n"
-//				+ "}\n";
-//
-//		assertEquals(expected, actual);
-//	}
-//
-//	@Test
-//	public void testGetSupportedGrounding() {
-//		FlinkSepaControllerGenerator cb = new FlinkSepaControllerGenerator(null, "", "");
-//		Builder b = MethodSpec.methodBuilder("testMethod");
-//
-//		String actual = cb.getSupportedGrounding(b, null).build().toString();
-//		String expected = "void testMethod() {\n"
-//				+ "  desc.setSupportedGrounding(de.fzi.cep.sepa.client.util.StandardTransportFormat.getSupportedGrounding());\n"
-//				+ "}\n";
-//
-//		assertEquals(expected, actual);
-//	}
-}
diff --git a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/TestDeployment.java b/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/TestDeployment.java
deleted file mode 100644
index 904590e..0000000
--- a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/TestDeployment.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.streampipes.codegeneration;
-
-import com.google.common.base.Charsets;
-import com.google.common.io.Resources;
-import org.streampipes.codegeneration.api.CodeGenerator;
-import org.streampipes.model.client.deployment.DeploymentConfiguration;
-import org.streampipes.model.graph.DataProcessorDescription;
-import org.streampipes.serializers.json.GsonSerializer;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-public class TestDeployment {
-
-  public static void main(String[] args) {
-    DeploymentConfiguration deploymentConfiguration = GsonSerializer.getGsonWithIds().fromJson(fromResources("DeploymentConfig.json"), DeploymentConfiguration.class);
-    DataProcessorDescription dataProcessorDescription = GsonSerializer.getGsonWithIds().fromJson(fromResources("Entity.json"), DataProcessorDescription.class);
-
-    File f = CodeGenerator.getCodeGenerator(deploymentConfiguration, dataProcessorDescription).getGeneratedFile();
-  }
-
-  private static String fromResources(String filename) {
-    URL url = Resources.getResource(filename);
-    try {
-      return Resources.toString(url, Charsets.UTF_8);
-    } catch (IOException e) {
-      e.printStackTrace();
-      return "";
-    }
-  }
-}
diff --git a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/api/CodeGeneratorTest.java b/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/api/CodeGeneratorTest.java
deleted file mode 100644
index e04164a..0000000
--- a/streampipes-code-generation/src/test/java/org/streampipes/codegeneration/api/CodeGeneratorTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.streampipes.codegeneration.api;
-
-public class CodeGeneratorTest {
-//    @Test
-//    public void getGeneratorImplementationFlinkSepaStandalone() throws Exception {
... 161139 lines suppressed ...


Mime
View raw message