diff --git a/theodolite-benchmarks/application-kafkastreams-commons/build.gradle b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle
index c1ce7502eddd48c7fb50f754012334e01823a3c6..e177aa5c4770c1a77fc21084a7766741fdb9bdec 100644
--- a/theodolite-benchmarks/application-kafkastreams-commons/build.gradle
+++ b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle
@@ -1,3 +1,14 @@
+plugins {
+    id 'theodolite.java-commons'
+}
+
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+}
+
 dependencies {
   // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
   // implementation 'org.slf4j:slf4j-simple:1.7.25'
@@ -7,4 +18,4 @@ dependencies {
 
   // Use JUnit test framework
   testImplementation 'junit:junit:4.12'
-  }
\ No newline at end of file
+}
diff --git a/theodolite-benchmarks/build.gradle b/theodolite-benchmarks/build.gradle
index 4e49dc99394304e6d9fa99e163b60a9877218c15..cd2ca985538ff84ec6b21aa5dccea86940d8fc6d 100644
--- a/theodolite-benchmarks/build.gradle
+++ b/theodolite-benchmarks/build.gradle
@@ -1,218 +1,13 @@
-// Inherited to all subprojects
-buildscript {
-  repositories {
-    maven {
-      url "https://plugins.gradle.org/m2/"
-    }
-  }
-  dependencies {
-    classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.6.0"
-    classpath "com.github.jengelman.gradle.plugins:shadow:6.0.0"
-  }
-}
-
-// Variables used to distinct different subprojects
-def useCaseProjects = subprojects.findAll {it -> it.name.matches('uc(.)*')}
-def useCaseApplications = subprojects.findAll {it -> it.name.matches('uc[0-9]+-application')}
-def useCaseApplicationsFlink = subprojects.findAll {it -> it.name.matches('uc[0-9]+-application-flink')}
-def useCaseGenerators = subprojects.findAll {it -> it.name.matches('uc[0-9]+-workload-generator*')}
-
 // Plugins
 allprojects {
   apply plugin: 'eclipse'
 }
 
-subprojects {
-  apply plugin: 'checkstyle'
-  apply plugin: 'pmd'
-  apply plugin: 'com.github.spotbugs'
-  apply plugin: 'java-library'
-}
-
-configure(useCaseProjects){
-    apply plugin: 'application'
-}
-
-configure(useCaseApplicationsFlink){
-    apply plugin: 'com.github.johnrengelman.shadow'
-    applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"]
-}
-
-// Java version for all subprojects
-subprojects {
-  java {
-    sourceCompatibility = JavaVersion.VERSION_11
-    targetCompatibility = JavaVersion.VERSION_11
-  }
-}
-
 // Check for updates every build
 configurations.all {
     resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
 }
 
-// Repositories for all projects
-allprojects {
-	repositories {
-	    jcenter()
-	    maven {
-	    	url "https://oss.sonatype.org/content/repositories/snapshots/"
-	    }
-	    maven {
-	        url 'https://packages.confluent.io/maven/'
-	    }
-    	maven {
-        	url 'https://repository.apache.org/content/repositories/snapshots/'
-    	} // TODO required?
-    }
-}
-
-// Dependencies for all Kafka Streams benchmarks (use case applications)
-configure(useCaseApplications) {
-  dependencies {
-      // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
-      implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
-      implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
-      implementation 'org.apache.kafka:kafka-streams:2.6.0' // enable TransformerSuppliers
-      implementation 'com.google.code.gson:gson:2.8.2'
-      implementation 'com.google.guava:guava:24.1-jre'
-      implementation 'org.slf4j:slf4j-simple:1.7.25'
-      implementation project(':application-kafkastreams-commons')
-
-      // Use JUnit test framework
-      testImplementation 'junit:junit:4.12'
-  }
-}
-
-// Dependencies for all Flink benchmarks (use case applications)
-configure(useCaseApplicationsFlink) {
-  ext {
-    flinkVersion = '1.12.2'
-    scalaBinaryVersion = '2.12'
-  }
-
-  dependencies {
-      // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703
-      implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true }
-      implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
-
-      // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
-      implementation 'org.apache.kafka:kafka-clients:2.2.0'
-      implementation 'com.google.guava:guava:24.1-jre'
-      implementation 'com.google.code.gson:gson:2.8.2'
-      implementation 'org.slf4j:slf4j-simple:1.6.1'
-      compile project(':flink-commons')
-
-      //compile group: 'org.apache.kafka', name: 'kafka-clients', version: "2.2.0"
-      compile group: 'org.apache.flink', name: 'flink-java', version: "${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-streaming-java_${scalaBinaryVersion}", version:"${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-table-api-java-bridge_${scalaBinaryVersion}", version: "${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-table-planner-blink_${scalaBinaryVersion}", version: "${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-connector-kafka_${scalaBinaryVersion}", version: "${flinkVersion}"
-      implementation "org.apache.flink:flink-avro:${flinkVersion}"
-      implementation "org.apache.flink:flink-avro-confluent-registry:${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-runtime-web_${scalaBinaryVersion}", version: "${flinkVersion}" // TODO: remove after development
-      compile group: 'org.apache.flink', name: "flink-statebackend-rocksdb_${scalaBinaryVersion}", version: "${flinkVersion}"
-      compile group: 'org.apache.flink', name: "flink-metrics-prometheus_${scalaBinaryVersion}", version: "${flinkVersion}"
-
-      // Use JUnit test framework
-      testImplementation 'junit:junit:4.12'
-  }
-  
-  run.classpath = sourceSets.main.runtimeClasspath
-
-  jar {
-      manifest {
-          attributes 'Built-By': System.getProperty('user.name'),
-                     'Build-Jdk': System.getProperty('java.version')
-      }
-  }
-
-  shadowJar {
-      configurations = [project.configurations.compile]
-      zip64 true
-  }
-}
-
-// Dependencies for all load generators
-configure(useCaseGenerators) {
-  dependencies {
-      // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
-      implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
-      implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
-      implementation 'org.slf4j:slf4j-simple:1.7.25'
-
-      // These dependencies are used for the workload-generator-commmon
-      implementation project(':workload-generator-commons')
-
-      // Use JUnit test framework
-      testImplementation 'junit:junit:4.12'
-  }
-}
-
-// Per default XML reports for SpotBugs are generated
-// Include this to generate HTML reports
-tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
-  reports {
-    // Either HTML or XML reports can be activated
-    html.enabled true
-    xml.enabled false
-  }
-}
-
-// Subprojects quality tools tasks
-subprojects {
-  task pmd {
-    group 'Quality Assurance'
-    description 'Run PMD'
-
-    dependsOn 'pmdMain'
-    dependsOn 'pmdTest'
-  }
-
-  task checkstyle {
-    group 'Quality Assurance'
-    description 'Run Checkstyle'
-
-    dependsOn 'checkstyleMain'
-    dependsOn 'checkstyleTest'
-  }
-
-  task spotbugs {
-    group 'Quality Assurance'
-    description 'Run SpotBugs'
-
-    dependsOn 'spotbugsMain'
-    dependsOn 'spotbugsTest'
-  }
-}
-
-// Subprojects quality tools configuration
-subprojects {
-  pmd {
-    ruleSets = [] // Gradle requires to clean the rule sets first
-    ruleSetFiles = files("$rootProject.projectDir/config/pmd.xml")
-    ignoreFailures = false
-    toolVersion = "6.7.0"
-  }
-
-  checkstyle {
-    configDirectory = file("$rootProject.projectDir/config")
-    configFile = file("$rootProject.projectDir/config/checkstyle.xml")
-    maxWarnings = 0
-    ignoreFailures = false
-    toolVersion = "8.12"
-  }
-
-  spotbugs {
-    excludeFilter = file("$rootProject.projectDir/config/spotbugs-exclude-filter.xml")
-    reportLevel = "low"
-    effort = "max"
-    ignoreFailures = false
-    toolVersion = '4.1.4'
-  }
-}
-
 allprojects {
   eclipse {
       classpath {
diff --git a/theodolite-benchmarks/buildSrc/build.gradle b/theodolite-benchmarks/buildSrc/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..4c099de32dc97ed3aa0417e8fff1f06e2a50dfd8
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/build.gradle
@@ -0,0 +1,24 @@
+buildscript {
+  repositories {
+    maven {
+      url "https://plugins.gradle.org/m2/"
+    }
+  }
+  dependencies {
+    classpath "com.github.jengelman.gradle.plugins:shadow:6.0.0"
+  }
+}
+
+// to discover the precompiled script plugins
+plugins {
+    id 'groovy-gradle-plugin'
+}
+
+repositories {
+    gradlePluginPortal() // so that external plugins can be resolved in dependencies section
+}
+
+dependencies {
+    implementation 'gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.6.0'
+    implementation 'com.github.jengelman.gradle.plugins:shadow:6.0.0'
+}
diff --git a/theodolite-benchmarks/buildSrc/settings.gradle b/theodolite-benchmarks/buildSrc/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-commons.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-commons.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..f195d6e117d29cad7a6d7494835626f92fb1c2b0
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-commons.gradle
@@ -0,0 +1,7 @@
+plugins {
+  // common java conventions
+  id 'theodolite.java-conventions'
+
+  // provide library capability in commons
+  id 'java-library'
+}
diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-conventions.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-conventions.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..773872648edfd4b30218a99d307b6e7c45ed3470
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.java-conventions.gradle
@@ -0,0 +1,70 @@
+plugins {
+  id 'java'
+  id 'checkstyle'
+  id 'pmd'
+
+  // NOTE: external plugin version is specified in implementation dependency artifact of the project's build file
+  id 'com.github.spotbugs'
+}
+
+java {
+  sourceCompatibility = JavaVersion.VERSION_11
+  targetCompatibility = JavaVersion.VERSION_11
+}
+
+// Per default XML reports for SpotBugs are generated
+// Include this to generate HTML reports
+tasks.withType(com.github.spotbugs.snom.SpotBugsTask) {
+  reports {
+    // Either HTML or XML reports can be activated
+    html.enabled true
+    xml.enabled false
+  }
+}
+
+task pmd {
+  group 'Quality Assurance'
+  description 'Run PMD'
+
+  dependsOn 'pmdMain'
+  dependsOn 'pmdTest'
+}
+
+task checkstyle {
+  group 'Quality Assurance'
+  description 'Run Checkstyle'
+
+  dependsOn 'checkstyleMain'
+  dependsOn 'checkstyleTest'
+}
+
+task spotbugs {
+  group 'Quality Assurance'
+  description 'Run SpotBugs'
+
+  dependsOn 'spotbugsMain'
+  dependsOn 'spotbugsTest'
+}
+
+pmd {
+  ruleSets = [] // Gradle requires to clean the rule sets first
+  ruleSetFiles = files("$rootProject.projectDir/config/pmd.xml")
+  ignoreFailures = false
+  toolVersion = "6.7.0"
+}
+
+checkstyle {
+  configDirectory = file("$rootProject.projectDir/config")
+  configFile = file("$rootProject.projectDir/config/checkstyle.xml")
+  maxWarnings = 0
+  ignoreFailures = false
+  toolVersion = "8.12"
+}
+
+spotbugs {
+  excludeFilter = file("$rootProject.projectDir/config/spotbugs-exclude-filter.xml")
+  reportLevel = "low"
+  effort = "max"
+  ignoreFailures = false
+  toolVersion = '4.1.4'
+}
diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..f9c1d98d9f88a95bdc3fa25e7c1bec2f3c9bddb4
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-flink.gradle
@@ -0,0 +1,64 @@
+plugins {
+  id 'theodolite.java-conventions'
+  id 'application' // executable
+  id 'com.github.johnrengelman.shadow' // create fat jar
+}
+
+applicationDefaultJvmArgs = ["-Dlog4j.configuration=log4j.properties"]
+
+ext {
+  flinkVersion = '1.12.2'
+  scalaBinaryVersion = '2.12'
+}
+
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+  maven {
+    url 'https://packages.confluent.io/maven/'
+  }
+}
+
+dependencies {
+    // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703
+    implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true }
+    implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
+
+    // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
+    implementation 'org.apache.kafka:kafka-clients:2.2.0'
+    implementation 'com.google.guava:guava:24.1-jre'
+    implementation 'com.google.code.gson:gson:2.8.2'
+    implementation 'org.slf4j:slf4j-simple:1.6.1'
+    compile project(':flink-commons')
+
+    //compile group: 'org.apache.kafka', name: 'kafka-clients', version: "2.2.0"
+    compile group: 'org.apache.flink', name: 'flink-java', version: "${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-streaming-java_${scalaBinaryVersion}", version:"${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-table-api-java-bridge_${scalaBinaryVersion}", version: "${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-table-planner-blink_${scalaBinaryVersion}", version: "${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-connector-kafka_${scalaBinaryVersion}", version: "${flinkVersion}"
+    implementation "org.apache.flink:flink-avro:${flinkVersion}"
+    implementation "org.apache.flink:flink-avro-confluent-registry:${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-runtime-web_${scalaBinaryVersion}", version: "${flinkVersion}" // TODO: remove after development
+    compile group: 'org.apache.flink', name: "flink-statebackend-rocksdb_${scalaBinaryVersion}", version: "${flinkVersion}"
+    compile group: 'org.apache.flink', name: "flink-metrics-prometheus_${scalaBinaryVersion}", version: "${flinkVersion}"
+
+    // Use JUnit test framework
+    testImplementation 'junit:junit:4.12'
+}
+
+run.classpath = sourceSets.main.runtimeClasspath
+
+jar {
+    manifest {
+        attributes 'Built-By': System.getProperty('user.name'),
+                   'Build-Jdk': System.getProperty('java.version')
+    }
+}
+
+shadowJar {
+    configurations = [project.configurations.compile]
+    zip64 true
+}
diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..c664038cfe7af98d9331a05db224170f06442537
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-kafka-streams.gradle
@@ -0,0 +1,31 @@
+plugins {
+  // common java conventions
+  id 'theodolite.java-conventions'
+
+  // make executable
+  id 'application'
+}
+
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+  maven {
+      url 'https://packages.confluent.io/maven/'
+  }
+}
+
+dependencies {
+    // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
+    implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
+    implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
+    implementation 'org.apache.kafka:kafka-streams:2.6.0' // enable TransformerSuppliers
+    implementation 'com.google.code.gson:gson:2.8.2'
+    implementation 'com.google.guava:guava:24.1-jre'
+    implementation 'org.slf4j:slf4j-simple:1.7.25'
+    implementation project(':application-kafkastreams-commons')
+
+    // Use JUnit test framework
+    testImplementation 'junit:junit:4.12'
+}
diff --git a/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..2c1f9509afffb5ec4abd9c65127abaed328da1e4
--- /dev/null
+++ b/theodolite-benchmarks/buildSrc/src/main/groovy/theodolite.uc-workload.gradle
@@ -0,0 +1,30 @@
+plugins {
+  // common java conventions
+  id 'theodolite.java-conventions'
+
+  // make executable
+  id 'application'
+}
+
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+  maven {
+      url 'https://packages.confluent.io/maven/'
+  }
+}
+
+dependencies {
+  // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
+  implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
+  implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
+  implementation 'org.slf4j:slf4j-simple:1.7.25'
+
+  // These dependencies are used for the workload-generator-commmon
+  implementation project(':workload-generator-commons')
+
+  // Use JUnit test framework
+  testImplementation 'junit:junit:4.12'
+}
diff --git a/theodolite-benchmarks/flink-commons/build.gradle b/theodolite-benchmarks/flink-commons/build.gradle
index bbfedff3ded8381a9d42bbad5a0926876bfe4e99..1b0b9359a406bf2ab16fbbe52631877cf360df2a 100644
--- a/theodolite-benchmarks/flink-commons/build.gradle
+++ b/theodolite-benchmarks/flink-commons/build.gradle
@@ -1,8 +1,22 @@
+plugins {
+    id 'theodolite.java-commons'
+}
+
 ext {
     flinkVersion = '1.12.0'
     scalaBinaryVersion = '2.12'
 }
 
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+  maven {
+    url 'https://packages.confluent.io/maven/'
+  }
+}
+
 dependencies {
     // Special version required because of https://issues.apache.org/jira/browse/FLINK-13703
     implementation('org.industrial-devops:titan-ccp-common:0.1.0-flink-ready-SNAPSHOT') { changing = true }
@@ -18,4 +32,4 @@ dependencies {
     
     // Use JUnit test framework
     testImplementation 'junit:junit:4.12'
-  }
\ No newline at end of file
+  }
diff --git a/theodolite-benchmarks/uc1-application-flink/build.gradle b/theodolite-benchmarks/uc1-application-flink/build.gradle
index 8b8552dbc0c116a0987dbdfe874ca3111c8f11b9..8a57c61ba7d3f799c69feb74d697b806f3773fa7 100644
--- a/theodolite-benchmarks/uc1-application-flink/build.gradle
+++ b/theodolite-benchmarks/uc1-application-flink/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-flink'
+}
+
 mainClassName = "theodolite.uc1.application.HistoryServiceFlinkJob"
diff --git a/theodolite-benchmarks/uc1-application/build.gradle b/theodolite-benchmarks/uc1-application/build.gradle
index 3b197e85116f41dde5574d9253d60e1146fe44a2..3c4f6cda286c61dcee7efe4b871fbd71657d7973 100644
--- a/theodolite-benchmarks/uc1-application/build.gradle
+++ b/theodolite-benchmarks/uc1-application/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-kafka-streams'
+}
+
 mainClassName = "theodolite.uc1.application.HistoryService"
diff --git a/theodolite-benchmarks/uc1-workload-generator/build.gradle b/theodolite-benchmarks/uc1-workload-generator/build.gradle
index 9cc0bdbf01032efa3b251db06a2837cc9b920675..cec494c8e4f15d327b7c07c4f1f0adb597fa329d 100644
--- a/theodolite-benchmarks/uc1-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc1-workload-generator/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-workload'
+}
+
 mainClassName = "theodolite.uc1.workloadgenerator.LoadGenerator"
diff --git a/theodolite-benchmarks/uc2-application-flink/build.gradle b/theodolite-benchmarks/uc2-application-flink/build.gradle
index b5e847553db8f3847d5fe858c76b31520f728aff..ee30302acd653257e361ffdbeb25aea241da1845 100644
--- a/theodolite-benchmarks/uc2-application-flink/build.gradle
+++ b/theodolite-benchmarks/uc2-application-flink/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+  id 'theodolite.uc-flink'
+}
+
 allprojects {
 	repositories {
     	maven {
diff --git a/theodolite-benchmarks/uc2-application/build.gradle b/theodolite-benchmarks/uc2-application/build.gradle
index e4d3f5346e401def9c9a5a49820d0682eafb0ad3..da9ea85fa0b63188f06c596cc49fc6e5bb1bc048 100644
--- a/theodolite-benchmarks/uc2-application/build.gradle
+++ b/theodolite-benchmarks/uc2-application/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-kafka-streams'
+}
+
 mainClassName = "theodolite.uc2.application.HistoryService"
diff --git a/theodolite-benchmarks/uc2-workload-generator/build.gradle b/theodolite-benchmarks/uc2-workload-generator/build.gradle
index f2c3e5d2e73b655dffd94222ecfbc4fc31b7f722..e949b625b95462c90819dc7c23a238abc77007f0 100644
--- a/theodolite-benchmarks/uc2-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc2-workload-generator/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-workload'
+}
+
 mainClassName = "theodolite.uc2.workloadgenerator.LoadGenerator"
diff --git a/theodolite-benchmarks/uc3-application-flink/build.gradle b/theodolite-benchmarks/uc3-application-flink/build.gradle
index d50fa8efecd9b17e387d00c71934b8cc144240a1..20801fa5ff637980012d3f0eb55ee8c5c787a902 100644
--- a/theodolite-benchmarks/uc3-application-flink/build.gradle
+++ b/theodolite-benchmarks/uc3-application-flink/build.gradle
@@ -1,3 +1,7 @@
+plugins {
+  id 'theodolite.uc-flink'
+}
+
 allprojects {
 	repositories {
     	maven {
diff --git a/theodolite-benchmarks/uc3-application/build.gradle b/theodolite-benchmarks/uc3-application/build.gradle
index aa96b6dbf90c4895dfda57a51c753c9103c29414..ac6bd76b5b72718eb7eadf0ade8d5c4d9456b3ba 100644
--- a/theodolite-benchmarks/uc3-application/build.gradle
+++ b/theodolite-benchmarks/uc3-application/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-kafka-streams'
+}
+
 mainClassName = "theodolite.uc3.application.HistoryService"
diff --git a/theodolite-benchmarks/uc3-workload-generator/build.gradle b/theodolite-benchmarks/uc3-workload-generator/build.gradle
index c3ca94290c8600d8482210362666efc1249b8f02..d536e6e5ab47fcca02f99ce88b30d6ac9b69d71f 100644
--- a/theodolite-benchmarks/uc3-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc3-workload-generator/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-workload'
+}
+
 mainClassName = "theodolite.uc3.workloadgenerator.LoadGenerator"
diff --git a/theodolite-benchmarks/uc4-application-flink/build.gradle b/theodolite-benchmarks/uc4-application-flink/build.gradle
index 0ad804c62566aff81d05f71a874f52c09be4ebcb..e5466514ff96f3c0a711cbb333e5a6bd1a8dde94 100644
--- a/theodolite-benchmarks/uc4-application-flink/build.gradle
+++ b/theodolite-benchmarks/uc4-application-flink/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-flink'
+}
+
 mainClassName = "theodolite.uc4.application.AggregationServiceFlinkJob"
diff --git a/theodolite-benchmarks/uc4-application/build.gradle b/theodolite-benchmarks/uc4-application/build.gradle
index 9cb1b311d8f50769d371952db886e4a00a454591..8486e9302b655087e0c8a970fd7f55a170f60a8f 100644
--- a/theodolite-benchmarks/uc4-application/build.gradle
+++ b/theodolite-benchmarks/uc4-application/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-kafka-streams'
+}
+
 mainClassName = "theodolite.uc4.application.AggregationService"
diff --git a/theodolite-benchmarks/uc4-workload-generator/build.gradle b/theodolite-benchmarks/uc4-workload-generator/build.gradle
index 8865ec9391213f3d8c52be2366573dee09652087..14b39ccd5d3bc736f49bf2dff6943bfda66fac91 100644
--- a/theodolite-benchmarks/uc4-workload-generator/build.gradle
+++ b/theodolite-benchmarks/uc4-workload-generator/build.gradle
@@ -1 +1,5 @@
+plugins {
+  id 'theodolite.uc-workload'
+}
+
 mainClassName = "theodolite.uc4.workloadgenerator.LoadGenerator"
diff --git a/theodolite-benchmarks/workload-generator-commons/build.gradle b/theodolite-benchmarks/workload-generator-commons/build.gradle
index c42fff0412c332bc8292e175a352c03ada71f659..118f3e648f829a3eafe719ddf660d35ac8563574 100644
--- a/theodolite-benchmarks/workload-generator-commons/build.gradle
+++ b/theodolite-benchmarks/workload-generator-commons/build.gradle
@@ -1,3 +1,17 @@
+plugins {
+    id 'theodolite.java-commons'
+}
+
+repositories {
+  jcenter()
+  maven {
+    url "https://oss.sonatype.org/content/repositories/snapshots/"
+  }
+  maven {
+      url 'https://packages.confluent.io/maven/'
+  }
+}
+
 dependencies {
   implementation 'com.google.guava:guava:30.1-jre'
   implementation 'com.hazelcast:hazelcast:4.1.1'
@@ -6,7 +20,7 @@ dependencies {
   implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
   implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
   implementation 'org.apache.kafka:kafka-streams:2.6.0' // TODO required?
-  
+
   // Use JUnit test framework
   testImplementation 'junit:junit:4.12'
-}
\ No newline at end of file
+}