diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-repository-defaults.properties b/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-repository-defaults.properties
new file mode 100644
index 000000000..64a879dfd
--- /dev/null
+++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-repository-defaults.properties
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 2015 Bosch Software Innovations GmbH and others
+#
+# This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License 2.0
+# which is available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+
+# Defines the polling time for the controllers in HH:MM:SS notation
+hawkbit.controller.pollingTime=00:05:00
+hawkbit.controller.pollingOverdueTime=00:05:00
+hawkbit.controller.maxPollingTime=23:59:59
+hawkbit.controller.minPollingTime=00:00:30
+
+# This configuration value is used to change the polling interval so that
+# controller tries to poll at least these many times between the last polling
+# and before start of maintenance window. The polling interval is bounded by
+# configured pollingTime and minPollingTime. The polling interval is
+# modified as per following scheme:
+# pollingTime(@time=t) = (maintenanceStartTime - t)/maintenanceWindowPollCount
+hawkbit.controller.maintenanceWindowPollCount=3
+
+# Attention: if you want to use a maximumPollingTime greater 23:59:59 you have to update the DurationField in the configuration window
+
+# Default tenant configuration - START
+hawkbit.server.tenant.configuration.authentication-header-enabled.keyName=authentication.header.enabled
+hawkbit.server.tenant.configuration.authentication-header-enabled.defaultValue=${hawkbit.server.ddi.security.authentication.header.enabled}
+hawkbit.server.tenant.configuration.authentication-header-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.authentication-header-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.repository-actions-autoclose-enabled.keyName=repository.actions.autoclose.enabled
+hawkbit.server.tenant.configuration.repository-actions-autoclose-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.repository-actions-autoclose-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.repository-actions-autoclose-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.authentication-header-authority.keyName=authentication.header.authority
+hawkbit.server.tenant.configuration.authentication-header-authority.defaultValue=${hawkbit.server.ddi.security.authentication.header.authority}
+
+hawkbit.server.tenant.configuration.authentication-targettoken-enabled.keyName=authentication.targettoken.enabled
+hawkbit.server.tenant.configuration.authentication-targettoken-enabled.defaultValue=${hawkbit.server.ddi.security.authentication.targettoken.enabled}
+hawkbit.server.tenant.configuration.authentication-targettoken-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.authentication-targettoken-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-enabled.keyName=authentication.gatewaytoken.enabled
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-enabled.defaultValue=${hawkbit.server.ddi.security.authentication.gatewaytoken.enabled}
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-key.keyName=authentication.gatewaytoken.key
+hawkbit.server.tenant.configuration.authentication-gatewaytoken-key.defaultValue=${hawkbit.server.ddi.security.authentication.gatewaytoken.key}
+
+hawkbit.server.tenant.configuration.polling-time.keyName=pollingTime
+hawkbit.server.tenant.configuration.polling-time.defaultValue=${hawkbit.controller.pollingTime}
+hawkbit.server.tenant.configuration.polling-time.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationPollingDurationValidator
+
+hawkbit.server.tenant.configuration.min-polling-time.keyName=minPollingTime
+hawkbit.server.tenant.configuration.min-polling-time.defaultValue=${hawkbit.controller.minPollingTime}
+hawkbit.server.tenant.configuration.min-polling-time.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationPollingDurationValidator
+
+hawkbit.server.tenant.configuration.polling-overdue-time.keyName=pollingOverdueTime
+hawkbit.server.tenant.configuration.polling-overdue-time.defaultValue=${hawkbit.controller.pollingOverdueTime}
+hawkbit.server.tenant.configuration.polling-overdue-time.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationPollingDurationValidator
+
+hawkbit.server.tenant.configuration.maintenance-window-poll-count.keyName=maintenanceWindowPollCount
+hawkbit.server.tenant.configuration.maintenance-window-poll-count.defaultValue=${hawkbit.controller.maintenanceWindowPollCount}
+hawkbit.server.tenant.configuration.maintenance-window-poll-count.dataType=java.lang.Integer
+hawkbit.server.tenant.configuration.maintenance-window-poll-count.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationIntegerValidator
+
+hawkbit.server.tenant.configuration.anonymous-download-enabled.keyName=anonymous.download.enabled
+hawkbit.server.tenant.configuration.anonymous-download-enabled.defaultValue=${hawkbit.server.download.anonymous.enabled}
+hawkbit.server.tenant.configuration.anonymous-download-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.anonymous-download-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.rollout-approval-enabled.keyName=rollout.approval.enabled
+hawkbit.server.tenant.configuration.rollout-approval-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.rollout-approval-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.rollout-approval-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.action-cleanup-enabled.keyName=action.cleanup.enabled
+hawkbit.server.tenant.configuration.action-cleanup-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.action-cleanup-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.action-cleanup-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.action-cleanup-action-expiry.keyName=action.cleanup.actionExpiry
+# default: 30 days
+hawkbit.server.tenant.configuration.action-cleanup-action-expiry.defaultValue=2592000000
+hawkbit.server.tenant.configuration.action-cleanup-action-expiry.dataType=java.lang.Long
+hawkbit.server.tenant.configuration.action-cleanup-action-expiry.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationLongValidator
+
+hawkbit.server.tenant.configuration.action-cleanup-action-status.keyName=action.cleanup.actionStatus
+hawkbit.server.tenant.configuration.action-cleanup-action-status.defaultValue=CANCELED,ERROR
+
+hawkbit.server.tenant.configuration.multi-assignments-enabled.keyName=multi.assignments.enabled
+hawkbit.server.tenant.configuration.multi-assignments-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.multi-assignments-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.multi-assignments-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.batch-assignments-enabled.keyName=batch.assignments.enabled
+hawkbit.server.tenant.configuration.batch-assignments-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.batch-assignments-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.batch-assignments-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+hawkbit.server.tenant.configuration.user-confirmation-enabled.keyName=user.confirmation.flow.enabled
+hawkbit.server.tenant.configuration.user-confirmation-enabled.defaultValue=false
+hawkbit.server.tenant.configuration.user-confirmation-enabled.dataType=java.lang.Boolean
+hawkbit.server.tenant.configuration.user-confirmation-enabled.validator=org.eclipse.hawkbit.tenancy.configuration.validator.TenantConfigurationBooleanValidator
+
+# Default tenant configuration - END
diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-test-defaults.properties b/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-test-defaults.properties
new file mode 100644
index 000000000..e480b6974
--- /dev/null
+++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/resources/hawkbit-test-defaults.properties
@@ -0,0 +1,82 @@
+#
+# Copyright (c) 2015 Bosch Software Innovations GmbH and others
+#
+# This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License 2.0
+# which is available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+
+# Test utility properties for easier fault investigation - START
+## Logging - START
+logging.level.root=ERROR
+logging.level.org.eclipse.hawkbit.repository.test.matcher.EventVerifier=ERROR
+logging.level.org.eclipse.persistence=ERROR
+spring.datasource.eclipselink.logging.logger=JavaLogger
+spring.jpa.properties.eclipselink.logging.level=FINE
+spring.jpa.properties.eclipselink.logging.level.sql=FINE
+spring.jpa.properties.eclipselink.logging.parameters=true
+## Logging - END
+# Test utility properties for easier fault investigation - END
+
+# Default properties for test that can be overridden during test run - START
+# Enforce persistence of targetpolls for test predictability.
+hawkbit.server.repository.eagerPollPersistence=true
+
+# Default properties for test that can be overridden during test run - END
+
+# Properties that are managed by autoconfigure module at runtime and not available during test - START
+## DDI and download security - START
+hawkbit.server.ddi.security.authentication.header.enabled=true
+hawkbit.server.ddi.security.authentication.header.authority=
+hawkbit.server.ddi.security.authentication.targettoken.enabled=false
+hawkbit.server.ddi.security.authentication.gatewaytoken.enabled=false
+hawkbit.server.download.anonymous.enabled=false
+hawkbit.server.ddi.security.authentication.gatewaytoken.key=
+hawkbit.server.ddi.security.authentication.gatewaytoken.name=TestToken
+## DDI and download security - END
+
+## Download URL Generation - START
+hawkbit.artifact.url.protocols.download-http.rel=download-http
+hawkbit.artifact.url.protocols.download-http.hostname=localhost
+hawkbit.artifact.url.protocols.download-http.ip=127.0.0.1
+hawkbit.artifact.url.protocols.download-http.protocol=http
+hawkbit.artifact.url.protocols.download-http.port=8080
+hawkbit.artifact.url.protocols.download-http.supports=DMF,DDI
+hawkbit.artifact.url.protocols.download-http.ref={protocol}://{hostnameRequest}:{portRequest}/{tenant}/controller/v1/{controllerId}/softwaremodules/{softwareModuleId}/artifacts/{artifactFileName}/download
+hawkbit.artifact.url.protocols.md5sum-http.rel=md5sum-http
+hawkbit.artifact.url.protocols.md5sum-http.protocol=${hawkbit.artifact.url.protocols.download-http.protocol}
+hawkbit.artifact.url.protocols.md5sum-http.hostname=${hawkbit.artifact.url.protocols.download-http.hostname}
+hawkbit.artifact.url.protocols.md5sum-http.ip=${hawkbit.artifact.url.protocols.download-http.ip}
+hawkbit.artifact.url.protocols.md5sum-http.port=${hawkbit.artifact.url.protocols.download-http.port}
+hawkbit.artifact.url.protocols.md5sum-http.supports=DDI
+hawkbit.artifact.url.protocols.md5sum-http.ref=${hawkbit.artifact.url.protocols.download-http.ref}.MD5SUM
+hawkbit.artifact.url.protocols.download-cdn-http.rel=download
+hawkbit.artifact.url.protocols.download-cdn-http.hostname=localhost
+hawkbit.artifact.url.protocols.download-cdn-http.ip=127.0.0.1
+hawkbit.artifact.url.protocols.download-cdn-http.protocol=http
+hawkbit.artifact.url.protocols.download-cdn-http.port=8080
+hawkbit.artifact.url.protocols.download-cdn-http.supports=MGMT
+hawkbit.artifact.url.protocols.download-cdn-http.ref={protocol}://download-cdn.com/artifacts/{artifactFileName}/download
+## Download URL Generation - END
+
+# Quota - START
+hawkbit.server.security.dos.maxStatusEntriesPerAction=10
+hawkbit.server.security.dos.maxAttributeEntriesPerTarget=10
+hawkbit.server.security.dos.maxMetaDataEntriesPerSoftwareModule=10
+hawkbit.server.security.dos.maxRolloutGroupsPerRollout=5
+hawkbit.server.security.dos.maxMessagesPerActionStatus=10
+hawkbit.server.security.dos.maxMetaDataEntriesPerDistributionSet=10
+hawkbit.server.security.dos.maxSoftwareModuleTypesPerDistributionSetType=5
+hawkbit.server.security.dos.maxSoftwareModulesPerDistributionSet=5
+hawkbit.server.security.dos.maxArtifactsPerSoftwareModule=3
+hawkbit.server.security.dos.maxTargetsPerRolloutGroup=25
+hawkbit.server.security.dos.maxArtifactSize=600000
+hawkbit.server.security.dos.maxArtifactStorage=1000000
+hawkbit.server.security.dos.maxTargetDistributionSetAssignmentsPerManualAssignment=20
+hawkbit.server.security.dos.maxTargetsPerAutoAssignment=20
+hawkbit.server.security.dos.maxActionsPerTarget=20
+# Quota - END
+
+# Properties that are managed by autoconfigure module at runtime and not available during test - END
diff --git a/hawkbit-runtime/hawkbit-simple-ui/pom.xml b/hawkbit-runtime/hawkbit-simple-ui/pom.xml
index 0d2b280c3..6b397822b 100644
--- a/hawkbit-runtime/hawkbit-simple-ui/pom.xml
+++ b/hawkbit-runtime/hawkbit-simple-ui/pom.xml
@@ -36,9 +36,45 @@
17
24.2.2
4.0.4
+
+
+ true
+ true
+ iot.hawkbit
+ ${project.build.directory}/dash/summary
+
+ ${project.build.directory}/dash/review-summary
+ org.eclipse,org.junit
+
+ scm:git:git@github.com:eclipse/hawkbit.git
+ scm:git:https://github.com/eclipse/hawkbit.git
+ https://github.com/eclipse/hawkbit.git
+
+
+ https://sonarcloud.io
+ bosch-iot-rollouts
+ ${project.groupId}:${project.artifactId}
+ LOCAL_SCAN
+ true
+ 600
+ https://www.eclipse.org/hawkbit
+ https://circleci.com/gh/eclipse/hawkbit
+
+ **/target/generated-sources/apt/**,**/src/test/**,**/src/main/java/org/eclipse/hawkbit/repository/test/**
+
+
+ **/src/main/java/org/eclipse/hawkbit/ui/**,**/target/generated-sources/apt/**,**/src/main/java/org/eclipse/hawkbit/repository/test/**,**/examples/**
+
+ 0.8.8
+ ${project.build.directory}
+
+ ${project.basedir}/../hawkbit-test-report/target/jacoco-aggregate/jacoco.xml,
+ ${project.basedir}/../../hawkbit-test-report/target/jacoco-aggregate/jacoco.xml
+
+
-
+
ossrh
@@ -60,6 +96,12 @@
+
+
+ dash-licenses
+ https://repo.eclipse.org/content/repositories/dash-licenses
+
+
@@ -144,7 +186,7 @@
-
+
com.mycila
license-maven-plugin
@@ -161,10 +203,118 @@
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ 1.5.0
+
+ resolveCiFriendliesOnly
+ true
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+
+ flatten.clean
+ clean
+
+ clean
+
+
+
+
+
+ org.eclipse.dash
+ license-tool-plugin
+ 1.0.2
+
+
+ license-check
+
+ license-check
+
+
+
+
-
+
+
+
+ nexus_staging
+
+
+ !skipNexusStaging
+
+
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.13
+ true
+
+ ossrh
+ https://oss.sonatype.org/
+ false
+
+
+
+
+
+
+
+ create_gpg_signature
+
+ false
+
+ createGPGSignature
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.6
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+ --pinentry-mode
+ loopback
+
+
+
+
+
+
+
+
+
+
+
EPL-2.0