diff --git a/edqs/src/main/conf/edqs.conf b/edqs/src/main/conf/edqs.conf
new file mode 100644
index 0000000000..ae880ef7e8
--- /dev/null
+++ b/edqs/src/main/conf/edqs.conf
@@ -0,0 +1,22 @@
+#
+# Copyright © 2016-2024 The Thingsboard Authors
+#
+# Licensed 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.
+#
+
+export JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,heap*,age*,safepoint=debug:file=@pkg.logFolder@/gc.log:time,uptime,level,tags:filecount=10,filesize=10M"
+export JAVA_OPTS="$JAVA_OPTS -XX:+IgnoreUnrecognizedVMOptions -XX:+HeapDumpOnOutOfMemoryError"
+export JAVA_OPTS="$JAVA_OPTS -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+PerfDisableSharedMem -XX:+UseCondCardMark"
+export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=500 -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=10"
+export LOG_FILENAME=${pkg.name}.out
+export LOADER_PATH=${pkg.installFolder}/conf
diff --git a/edqs/src/main/conf/logback.xml b/edqs/src/main/conf/logback.xml
new file mode 100644
index 0000000000..4ff57d48ab
--- /dev/null
+++ b/edqs/src/main/conf/logback.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ ${pkg.logFolder}/${pkg.name}.log
+
+ ${pkg.logFolder}/${pkg.name}.%d{yyyy-MM-dd}.%i.log
+ 100MB
+ 30
+ 3GB
+
+
+ %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+ %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
diff --git a/msa/edqs/docker/Dockerfile b/msa/edqs/docker/Dockerfile
new file mode 100644
index 0000000000..e634029bbf
--- /dev/null
+++ b/msa/edqs/docker/Dockerfile
@@ -0,0 +1,31 @@
+#
+# Copyright © 2016-2024 The Thingsboard Authors
+#
+# Licensed 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.
+#
+
+FROM thingsboard/openjdk17:bookworm-slim
+
+COPY start-tb-edqs.sh ${pkg.name}.deb /tmp/
+
+RUN chmod a+x /tmp/*.sh \
+ && mv /tmp/start-tb-edqs.sh /usr/bin && \
+ (yes | dpkg -i /tmp/${pkg.name}.deb) && \
+ rm /tmp/${pkg.name}.deb && \
+ (systemctl --no-reload disable --now ${pkg.name}.service > /dev/null 2>&1 || :) && \
+ chown -R ${pkg.user}:${pkg.user} /tmp && \
+ chmod 555 ${pkg.installFolder}/bin/${pkg.name}.jar
+
+USER ${pkg.user}
+
+CMD ["start-tb-edqs.sh"]
\ No newline at end of file
diff --git a/msa/edqs/docker/start-tb-edqs.sh b/msa/edqs/docker/start-tb-edqs.sh
new file mode 100755
index 0000000000..bdd1ee48d3
--- /dev/null
+++ b/msa/edqs/docker/start-tb-edqs.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# Copyright © 2016-2024 The Thingsboard Authors
+#
+# Licensed 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.
+#
+
+CONF_FOLDER=${pkg.installFolder}/conf
+jarfile=${pkg.installFolder}/bin/${pkg.name}.jar
+configfile=${pkg.name}.conf
+
+source "${CONF_FOLDER}/${configfile}"
+
+echo "Starting '${project.name}' ..."
+
+cd ${pkg.installFolder}/bin
+
+exec java -cp ${jarfile} $JAVA_OPTS -Dloader.main=org.thingsboard.server.edqs.ThingsboardEdqsApplication \
+ -Dspring.jpa.hibernate.ddl-auto=none \
+ -Dlogging.config=$CONF_FOLDER/logback.xml \
+ org.springframework.boot.loader.launch.PropertiesLauncher
diff --git a/msa/edqs/pom.xml b/msa/edqs/pom.xml
new file mode 100644
index 0000000000..4874c06e4b
--- /dev/null
+++ b/msa/edqs/pom.xml
@@ -0,0 +1,190 @@
+
+
+ 4.0.0
+
+ org.thingsboard
+ 4.0.0-SNAPSHOT
+ msa
+
+ org.thingsboard.msa
+ edqs
+ pom
+
+ ThingsBoard Entity Data Query Microservice
+ https://thingsboard.io
+ ThingsBoard Entity Data Query Microservice
+
+
+ UTF-8
+ ${basedir}/../..
+ edqs
+ edqs
+ /var/log/${pkg.name}
+ /usr/share/${pkg.name}
+ pre-integration-test
+
+
+
+
+ org.thingsboard
+ edqs
+ ${project.version}
+ deb
+ deb
+ provided
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-edqs
+ package
+
+ copy
+
+
+
+
+ org.thingsboard
+ edqs
+ deb
+ deb
+ ${pkg.name}.deb
+ ${project.build.directory}
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-docker-config
+ process-resources
+
+ copy-resources
+
+
+ ${project.build.directory}
+
+
+ docker
+ true
+
+
+
+
+
+
+
+ com.spotify
+ dockerfile-maven-plugin
+
+
+ build-docker-image
+ pre-integration-test
+
+ build
+
+
+ ${dockerfile.skip}
+ ${docker.repo}/${docker.name}
+ true
+ false
+ ${project.build.directory}
+
+
+
+ tag-docker-image
+ pre-integration-test
+
+ tag
+
+
+ ${dockerfile.skip}
+ ${docker.repo}/${docker.name}
+ ${project.version}
+
+
+
+
+
+
+
+
+ push-docker-image
+
+
+ push-docker-image
+
+
+
+
+
+ com.spotify
+ dockerfile-maven-plugin
+
+
+ push-latest-docker-image
+ pre-integration-test
+
+ push
+
+
+ latest
+ ${docker.repo}/${docker.name}
+
+
+
+ push-version-docker-image
+ pre-integration-test
+
+ push
+
+
+ ${project.version}
+ ${docker.repo}/${docker.name}
+
+
+
+
+
+
+
+
+
+
+ jenkins
+ Jenkins Repository
+ https://repo.jenkins-ci.org/releases
+
+ false
+
+
+
+
diff --git a/msa/pom.xml b/msa/pom.xml
index ff394295f4..259de5fb93 100644
--- a/msa/pom.xml
+++ b/msa/pom.xml
@@ -48,6 +48,7 @@
transport
js-executor
monitoring
+ edqs