diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000000..13eb66a1ba7
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,29 @@
+version: 2
+updates:
+
+ - package-ecosystem: "npm"
+ directory: "/pdf-service"
+ schedule:
+ interval: "weekly"
+
+ # Covers all modules listed in root pom.xml
+ - package-ecosystem: "maven"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+
+ # Not in root pom.xml - need individual entries
+ - package-ecosystem: "maven"
+ directory: "/MDMS-v2"
+ schedule:
+ interval: "weekly"
+
+ - package-ecosystem: "maven"
+ directory: "/egov-malware-detection"
+ schedule:
+ interval: "weekly"
+
+ - package-ecosystem: "maven"
+ directory: "/egov-user"
+ schedule:
+ interval: "weekly"
\ No newline at end of file
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 814483db03a..f50c80c1c3b 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -31,6 +31,7 @@ on:
- "egov-indexer"
- "egov-localization"
- "egov-location"
+ - "egov-malware-detection"
- "egov-mdms-service"
- "egov-notification-mail"
- "egov-notification-sms"
@@ -59,9 +60,8 @@ on:
- "zuul"
default: "audit-service"
-env:
- DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }}
- DOCKER_PASSWORD: ${{ secrets.DOCKER_ACCESS_TOKEN }}
+permissions:
+ contents: read
jobs:
resolve-config:
@@ -82,8 +82,9 @@ jobs:
- name: Determine Dockerfile path from build-config.yml
id: pick_dockerfile
+ env:
+ SERVICE: ${{ github.event.inputs.service }}
run: |
- SERVICE="${{ github.event.inputs.service }}"
DEFAULT_DOCKERFILE="build/maven/Dockerfile"
echo "Looking for service '$SERVICE' in build-config.yml..."
@@ -130,8 +131,11 @@ jobs:
- name: Check for DB folder
id: check-db-folder
+ env:
+ SERVICE: ${{ github.event.inputs.service }}
+ SERVICE_FOLDER: ${{ github.event.inputs.service_folder }}
run: |
- BASE_PATH="${{ github.event.inputs.service_folder }}/${{ github.event.inputs.service }}"
+ BASE_PATH="${SERVICE_FOLDER}/${SERVICE}"
if [ -d "$BASE_PATH/src/main/resources/db" ]; then
echo "folder_exists=true" >> "$GITHUB_OUTPUT"
@@ -151,8 +155,8 @@ jobs:
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
- username: ${{ env.DOCKER_USERNAME }}
- password: ${{ env.DOCKER_PASSWORD }}
+ username: ${{ vars.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Build & push ${{ matrix.arch }} image
id: build_push_app
@@ -187,37 +191,45 @@ jobs:
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
- username: ${{ env.DOCKER_USERNAME }}
- password: ${{ env.DOCKER_PASSWORD }}
+ username: ${{ vars.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: Create & push multi-arch manifest (application)
+ env:
+ SERVICE: ${{ github.event.inputs.service }}
+ TAG: ${{ needs.resolve-config.outputs.tag }}
run: |
docker buildx imagetools create \
- --tag egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }} \
- egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }}-amd64 \
- egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }}-arm64
+ --tag "egovio/${SERVICE}:${TAG}" \
+ "egovio/${SERVICE}:${TAG}-amd64" \
+ "egovio/${SERVICE}:${TAG}-arm64"
- name: Create & push multi-arch manifest (database)
if: ${{ needs.build-matrix.outputs.db_folder_exists == 'true' }}
+ env:
+ SERVICE: ${{ github.event.inputs.service }}
+ TAG: ${{ needs.resolve-config.outputs.tag }}
run: |
docker buildx imagetools create \
- --tag egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }} \
- egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }}-amd64 \
- egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }}-arm64
+ --tag "egovio/${SERVICE}-db:${TAG}" \
+ "egovio/${SERVICE}-db:${TAG}-amd64" \
+ "egovio/${SERVICE}-db:${TAG}-arm64"
- name: Add all image tags to GitHub summary
env:
DB_EXISTS: ${{ needs.build-matrix.outputs.db_folder_exists }}
+ SERVICE: ${{ github.event.inputs.service }}
+ TAG: ${{ needs.resolve-config.outputs.tag }}
run: |
echo "## App Docker images" >> $GITHUB_STEP_SUMMARY
- echo "- \`egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }}-amd64\`" >> $GITHUB_STEP_SUMMARY
- echo "- \`egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }}-arm64\`" >> $GITHUB_STEP_SUMMARY
- echo "- **multi‑arch** \`egovio/${{ github.event.inputs.service }}:${{ needs.resolve-config.outputs.tag }}\`" >> $GITHUB_STEP_SUMMARY
+ echo "- \`egovio/${SERVICE}:${TAG}-amd64\`" >> $GITHUB_STEP_SUMMARY
+ echo "- \`egovio/${SERVICE}:${TAG}-arm64\`" >> $GITHUB_STEP_SUMMARY
+ echo "- **multi‑arch** \`egovio/${SERVICE}:${TAG}\`" >> $GITHUB_STEP_SUMMARY
if [ "$DB_EXISTS" = "true" ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "## DB Docker images" >> $GITHUB_STEP_SUMMARY
- echo "- \`egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }}-amd64\`" >> $GITHUB_STEP_SUMMARY
- echo "- \`egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }}-arm64\`" >> $GITHUB_STEP_SUMMARY
- echo "- **multi‑arch** \`egovio/${{ github.event.inputs.service }}-db:${{ needs.resolve-config.outputs.tag }}\`" >> $GITHUB_STEP_SUMMARY
+ echo "- \`egovio/${SERVICE}-db:${TAG}-amd64\`" >> $GITHUB_STEP_SUMMARY
+ echo "- \`egovio/${SERVICE}-db:${TAG}-arm64\`" >> $GITHUB_STEP_SUMMARY
+ echo "- **multi‑arch** \`egovio/${SERVICE}-db:${TAG}\`" >> $GITHUB_STEP_SUMMARY
fi
diff --git a/.github/workflows/osv-scanner-pr.yml b/.github/workflows/osv-scanner-pr.yml
deleted file mode 100644
index a031139cc4d..00000000000
--- a/.github/workflows/osv-scanner-pr.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: OSV-Scanner PR Scan
-
-# Change "main" to your default branch if you use a different name, i.e. "master"
-on:
- pull_request:
- branches: [main]
- merge_group:
- branches: [main]
-
-permissions:
- # Required to upload SARIF file to CodeQL. See: https://github.com/github/codeql-action/issues/2117
- actions: read
- # Require writing security events to upload SARIF file to security tab
- security-events: write
- # Only need to read contents
- contents: read
-
-jobs:
- scan-pr:
- uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@v2.2.2"
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
new file mode 100644
index 00000000000..26e38cf32da
--- /dev/null
+++ b/.github/workflows/scorecard.yml
@@ -0,0 +1,77 @@
+# This workflow uses actions that are not certified by GitHub. They are provided
+# by a third-party and are governed by separate terms of service, privacy
+# policy, and support documentation.
+
+name: Scorecard supply-chain security
+on:
+ # For Branch-Protection check. Only the default branch is supported. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
+ branch_protection_rule:
+ # To guarantee Maintained check is occasionally updated. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
+ schedule:
+ - cron: '45 1 * * 4'
+ push:
+ branches: [ "master" ]
+
+ workflow_dispatch:
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+ analysis:
+ name: Scorecard analysis
+ runs-on: ubuntu-latest
+ # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
+ if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
+ permissions:
+ # Needed to upload the results to code-scanning dashboard.
+ security-events: write
+ # Needed to publish results and get a badge (see publish_results below).
+ id-token: write
+
+ steps:
+ - name: "Checkout code"
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ persist-credentials: false
+
+ - name: "Run analysis"
+ uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
+ with:
+ results_file: results.sarif
+ results_format: sarif
+ # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
+ # - you want to enable the Branch-Protection check on a *public* repository, or
+ # - you are installing Scorecard on a *private* repository
+ # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
+ # repo_token: ${{ secrets.SCORECARD_TOKEN }}
+
+ # Public repositories:
+ # - Publish results to OpenSSF REST API for easy access by consumers
+ # - Allows the repository to include the Scorecard badge.
+ # - See https://github.com/ossf/scorecard-action#publishing-results.
+ # For private repositories:
+ # - `publish_results` will always be set to `false`, regardless
+ # of the value entered here.
+ publish_results: true
+
+ # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
+ # file_mode: git
+
+ # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
+ # format to the repository Actions tab.
+ - name: "Upload artifact"
+ uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
+ with:
+ name: SARIF file
+ path: results.sarif
+ retention-days: 5
+
+ # Upload the results to GitHub's code scanning dashboard (optional).
+ # Commenting out will disable upload of results to your repo's Code Scanning dashboard
+ - name: "Upload to code-scanning"
+ uses: github/codeql-action/upload-sarif@v3
+ with:
+ sarif_file: results.sarif
diff --git a/.github/workflows/sonarbuild.yaml b/.github/workflows/sonarbuild.yaml
deleted file mode 100644
index fd38ea51abc..00000000000
--- a/.github/workflows/sonarbuild.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: SonarScan
-
-on:
- push:
- branches:
- - master
-
-
-jobs:
- build:
- name: Build and analyze
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- - name: Set up JDK 17
- uses: actions/setup-java@v4
- with:
- java-version: 17
- distribution: 'zulu' # Alternative distribution options are available.
- - name: Cache SonarQube packages
- uses: actions/cache@v4
- with:
- path: ~/.sonar/cache
- key: ${{ runner.os }}-sonar
- restore-keys: ${{ runner.os }}-sonar
- - name: Cache Maven packages
- uses: actions/cache@v4
- with:
- path: ~/.m2
- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
- restore-keys: ${{ runner.os }}-m2
- - name: Build and analyze
- env:
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
- run: |
- cd core-services
- mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=egovernments_Digit-Core_eabd9e0b-981d-4368-b888-b6c3350164f5 -Dsonar.projectName='Digit-Core'
diff --git a/accelerators/gateway-kubernetes-discovery/go.mod b/accelerators/gateway-kubernetes-discovery/go.mod
index dce635764a6..4b35aafe9fe 100644
--- a/accelerators/gateway-kubernetes-discovery/go.mod
+++ b/accelerators/gateway-kubernetes-discovery/go.mod
@@ -4,6 +4,6 @@ go 1.13
require (
k8s.io/api v0.17.0
- k8s.io/apimachinery v0.17.0
- k8s.io/client-go v0.17.0
+ k8s.io/apimachinery v0.17.9
+ k8s.io/client-go v0.17.16
)
diff --git a/build/maven-java8/Dockerfile b/build/maven-java8/Dockerfile
index a55e8b3eb84..edeef0001c5 100644
--- a/build/maven-java8/Dockerfile
+++ b/build/maven-java8/Dockerfile
@@ -1,5 +1,5 @@
# ──────────────── BUILD STAGE ────────────────
-FROM maven:3.9.6-amazoncorretto-8-debian AS build
+FROM maven:3.9-eclipse-temurin-8 AS build
ARG WORK_DIR
WORKDIR /app
@@ -13,7 +13,7 @@ RUN mvn -B -f pom.xml package -DskipTests
# ─────────────── RUNTIME STAGE ───────────────
-FROM eclipse-temurin:8-jdk AS runtime
+FROM eclipse-temurin:8-jre AS runtime
WORKDIR /opt/egov
# Pull in the fat JAR and our startup script
@@ -22,6 +22,5 @@ COPY --from=build /app/start.sh ./start.sh
RUN chmod +x ./start.sh
-# Override any Alpine tini entrypoint and launch via shell
ENTRYPOINT ["sh", "./start.sh"]
diff --git a/build/maven/Dockerfile b/build/maven/Dockerfile
index 5cbbaea72e7..dc6f1625439 100644
--- a/build/maven/Dockerfile
+++ b/build/maven/Dockerfile
@@ -1,27 +1,21 @@
-FROM maven:3.9.6-amazoncorretto-17 AS build
+# ──────────────── BUILD STAGE ────────────────
+FROM maven:3.9-eclipse-temurin-17 AS build
ARG WORK_DIR
WORKDIR /app
# Copy project files
COPY ${WORK_DIR}/pom.xml ./pom.xml
-COPY build/maven/start.sh ./start.sh
COPY ${WORK_DIR}/src ./src
# Build the project
-RUN mvn -B -f /app/pom.xml package
+RUN mvn -B -f /app/pom.xml package -DskipTests
-# Runtime image – using a multi-arch base image
-FROM amazoncorretto:17-alpine
+# ─────────────── RUNTIME STAGE ───────────────
+FROM gcr.io/distroless/java17-debian12:nonroot
WORKDIR /opt/egov
-# Copy artifacts from the build stage
-COPY --from=build /app/target/*.jar /app/start.sh /opt/egov/
+# Copy artifact from the build stage
+COPY --from=build /app/target/*.jar ./application.jar
-# Ensure the start script has correct line endings and is executable
-RUN dos2unix /opt/egov/start.sh && chmod +x /opt/egov/start.sh
-
-# Verify architecture inside the container
-RUN uname -m
-
-CMD ["/opt/egov/start.sh"]
\ No newline at end of file
+ENTRYPOINT ["java", "-jar", "application.jar"]
\ No newline at end of file
diff --git a/core-services/audit-service/CHANGELOG.md b/core-services/audit-service/CHANGELOG.md
index 5d8d0466c0e..821773e3ecf 100644
--- a/core-services/audit-service/CHANGELOG.md
+++ b/core-services/audit-service/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
All notable changes to this module will be documented in this file.
+## 2.9.3 - 2026-03-16
+- Upgraded Spring Boot version from 3.2.2 to 3.4.5 to fix HIGH/CRITICAL CVEs
+- Upgraded tracer, services-common, mdms-client, enc-client library versions
+- Upgraded PostgreSQL driver from 42.7.1 to 42.7.4
+- Removed hardcoded log4j2.version override (now managed by Spring Boot)
+
## 2.9.1 - 2025-05-21
- Upgraded tracer version from 2.9.0 to 2.9.1
- added variables in application.properties required for opentelemetry
diff --git a/core-services/audit-service/pom.xml b/core-services/audit-service/pom.xml
index 7e745b18b60..8a882685159 100644
--- a/core-services/audit-service/pom.xml
+++ b/core-services/audit-service/pom.xml
@@ -5,16 +5,21 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.2
+ 3.4.5
org.egov
audit-service
- 2.9.1-SNAPSHOT
+ 2.9.3-SNAPSHOT
audit-service
Service to handle audit logs
17
-
+ 10.1.45
+ 2.18.6
+ 1.5.25
+ 6.2.11
+ 42.7.11
+
@@ -59,18 +64,18 @@
commons-io
commons-io
- 2.6
+ 2.18.0
net.minidev
json-smart
- 2.5.0
+ 2.5.2
org.egov.services
tracer
- 2.9.1-SNAPSHOT
+ 2.9.2-SNAPSHOT
org.bouncycastle
@@ -80,7 +85,7 @@
org.egov
mdms-client
- 2.9.0-SNAPSHOT
+ 2.9.1-SNAPSHOT
org.flywaydb
@@ -90,7 +95,7 @@
org.postgresql
postgresql
- 42.7.1
+ ${postgresql.version}
com.github.zafarkhaja
diff --git a/core-services/audit-service/src/main/java/org/egov/auditservice/config/AuditServiceConfiguration.java b/core-services/audit-service/src/main/java/org/egov/auditservice/config/AuditServiceConfiguration.java
index 3895b0329b2..2f02391de77 100644
--- a/core-services/audit-service/src/main/java/org/egov/auditservice/config/AuditServiceConfiguration.java
+++ b/core-services/audit-service/src/main/java/org/egov/auditservice/config/AuditServiceConfiguration.java
@@ -41,7 +41,6 @@ public void initialize() {
}
@Bean
- @Autowired
public MappingJackson2HttpMessageConverter jacksonConverter(ObjectMapper objectMapper) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
objectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
diff --git a/core-services/audit-service/src/main/java/org/egov/auditservice/web/controllers/AuditServiceController.java b/core-services/audit-service/src/main/java/org/egov/auditservice/web/controllers/AuditServiceController.java
index 9f17b778931..dacb321a7e6 100644
--- a/core-services/audit-service/src/main/java/org/egov/auditservice/web/controllers/AuditServiceController.java
+++ b/core-services/audit-service/src/main/java/org/egov/auditservice/web/controllers/AuditServiceController.java
@@ -32,7 +32,7 @@ public class AuditServiceController {
@RequestMapping(value="/v1/_create", method = RequestMethod.POST)
public ResponseEntity create(@RequestBody @Valid AuditLogRequest auditLogRequest) {
- log.info("Received request: " + auditLogRequest.toString());
+ log.info("Received audit log create request");
// List responseHash = ingestService.ingestData(ingestRequest);
// //log.info("############ Completed before pushing data");
// ResponseInfo responseInfo = responseInfoFactory.createResponseInfoFromRequestInfo(ingestRequest.getRequestInfo(), true);
diff --git a/core-services/boundary-service/pom.xml b/core-services/boundary-service/pom.xml
index 1827141c9d9..33276f04667 100644
--- a/core-services/boundary-service/pom.xml
+++ b/core-services/boundary-service/pom.xml
@@ -9,6 +9,8 @@
17
${java.version}
${java.version}
+ 2.18.6
+ 1.5.25
org.springframework.boot
@@ -65,7 +67,7 @@
org.postgresql
postgresql
- 42.7.1
+ 42.7.11
org.springframework.boot
@@ -88,7 +90,7 @@
org.egov.services
tracer
- 2.9.1-SNAPSHOT
+ 2.9.2-SNAPSHOT
org.egov.services
diff --git a/core-services/chatbot/.gitignore b/core-services/chatbot/.gitignore
deleted file mode 100644
index 07827cc2662..00000000000
--- a/core-services/chatbot/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target/
-.idea/
\ No newline at end of file
diff --git a/core-services/chatbot/CHANGELOG.md b/core-services/chatbot/CHANGELOG.md
deleted file mode 100644
index 71820b6b0fa..00000000000
--- a/core-services/chatbot/CHANGELOG.md
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-# Changelog
-All notable changes to this module will be documented in this file.
-## 1.1.6 - 2022-01-13
-- Updated to log4j2 version 2.17.1
-
-## 1.1.5 - 2021-07-26
-- Fixed when large file is uploaded for any textual answers the service is terminating
-
-## 1.1.4 - 2021-05-11
-- Fixed security issue.
-
-## 1.1.3 - 2021-02-26
-- Updated domain name in application.properties
-
-## 1.1.2 - 2021-01-11
-- Updated PGR v2.0 API calls,request object and response object.
-
-## 1.1.0 - 2020-10-01
-- Integrate PGR v2.0
-
-## 1.0.0 - 2020-06-08
-- Added this service with support to create, track PGR complaints
-- Upgraded to spring boot `2.2.6-RELEASE`
diff --git a/core-services/chatbot/LOCALSETUP.md b/core-services/chatbot/LOCALSETUP.md
deleted file mode 100644
index d684d264914..00000000000
--- a/core-services/chatbot/LOCALSETUP.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Local Setup
-
-To setup the Chatbot service in your local system, clone the [Core Service repository](https://github.com/egovernments/core-services).
-
-## Dependencies
-
-### Infra Dependency
-
-- [X] Postgres DB
-- [ ] Redis
-- [ ] Elasticsearch
-- [X] Kafka
- - [X] Consumer
- - [X] Producer
-
-## Running Locally
-
-To run the Chatbot services locally, update below listed properties in `xternal.properties` before running the project:
-
-- `valuefirst.whatsapp.number`: the mobile number to be used on server
-
-- `valuefirst.username`: username for configured number for sending messages to user through whatsapp provider api calls
-
-- `valuefirst.password`: password for configured number for sending messages to user through whatsapp provider api calls
diff --git a/core-services/chatbot/README.md b/core-services/chatbot/README.md
deleted file mode 100644
index 68f225ceb05..00000000000
--- a/core-services/chatbot/README.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Chatbot
-
-Chatbot service is a chatbot which provides functionality to the user to access PGR module services like file complaint, track complaint, notifications from whatsapp. Currently citizen has three options to start conversation scan QR code, give missed call or directly send message to configured whatsapp number.
-
-### DB UML Diagram
-
-- NA
-
-### Service Dependencies
-
-- `egov-user-chatbot` : For creating user without name validation and logging in user
-- `egov-user` : For searching user
-- `egov-localization` : The chatbot is made such that it will store localization codes and the actual text value will be fetched only at the end. This way we can provide multi-lingual support. Localization service is also used to construct messages from templates. This dependency can be eliminated if you want to pass values instead of localization codes.
-- `egov-filestore` : It is a dependency if you want to send/receive any file. This includes sending PDF/Image files.
-- `egov-url-shortening` : For shortening links sent to the user
-- `egov-mdms-service` : For loading mdms data
-- `egov-location` : For loading locality data
-- `rainmaker-pgr` : For creating/searching PGR complaints
-
-### Swagger API Contract
-
-http://editor.swagger.io/?url=https://raw.githubusercontent.com/egovernments/core-services/RAIN-1288/docs/chatbot-contract.yml#!/
-
-## Service Details
-
-Chatbot service allows citizen to access PGR service through whatsapp. Citizen can provide all details required to create PGR complaint through question and answer method. The service continuosly listen on PGR update Kafka topic and send notifications to users associated with PGR record. On any message from citizen which is forwarded by whatsapp provider, chatbot processes his messages by passing message through various stages ex:- validations, enrichment, transformations etc and at the end sends final response to user by calling endpoint of whatsapp provider.
-
-#### Configurations
-
-There are two types of configurations for chatbot states:-
-- Configuration for each state in chatbot, ex:-
-
- ```
- name : pgr.create.locality
- description : "Locality"
- nodeType : step
- optional : false
-
- type : text
-
- validationRequired : true
- typeOfValues : FixedSetValues
- displayOptionsInExternalLink: true
-
- message : chatbot.messages.pgrCreateLocality
-
- values :
- class : org.egov.chat.xternal.valuefetch.LocalityValueFetcher
- params :
- tenantId : ~pgr.create.tenantId
- authToken : /user/authToken
- recipient: /extraInfo/recipient
-
- matchAnswerThreshold: 70
-
- errorMessage: chatbot.messages.pgrCreateLocalityError
- ```
-
-- Graph adjacency list configuration:- to define flow between chatbot states,ex:-
-
- root,pgr.create.tenantId,pgr.track.end
- pgr.create.tenantId,pgr.create.locality
- pgr.create.locality,pgr.create.landmark
-
-> Note: For more information about these configs please refer technical documentation for the service from https://digit-discuss.atlassian.net/l/c/q8wfb0My
-
-### API Details
-
-
-a) `POST /messages`
-
-Receive user sent message and forward it to chatbot core logic for further processing and sending back response
-
-- If the `media_type` parameter value is `text` then user input would be sent in parameter `text`, in other cases where `media_type` have some other value ex:- image, location etc, the user input would be sent in parameter `media_data`
-
-b) `GET /messages`
-
-Receive user sent message and forward it to chatbot core logic for further processing and sending back response
-
-- If the `media_type` parameter value is `text` then user input would be sent in parameter `text`, in other cases where `media_type` have some other value ex:- image, location etc, the user input would be sent in parameter `media_data`
-
-### Kafka Consumers
-- `update-pgr-service` : used in `update.pgr.service.topic` application property, chatbot listens on this topic to listen for updates on PGR records and then to send notifications to user.
-- The service uses consumers for internal processing also between different stages.
-
-### Kafka Producers
-- `send-message-localized` : chatbot sends data to this topic for telemetry indexing and for internal processing.
-- The service uses producers for internal processing also between different stages.
diff --git a/core-services/chatbot/pom.xml b/core-services/chatbot/pom.xml
deleted file mode 100644
index 02fbaa38b20..00000000000
--- a/core-services/chatbot/pom.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
- 4.0.0
-
- org.egov
- chatbot
- 1.1.6-SNAPSHOT
-
-
- 2.17.1
- 1.8
- ${java.version}
- ${java.version}
-
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.2.13.RELEASE
-
-
-
-
- src/main/java
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
- repackage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework
- spring-beans
- 5.2.20.RELEASE
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.kafka
- spring-kafka
-
-
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-jdbc
-
-
-
- org.postgresql
- postgresql
- 42.2.5
-
-
- org.flywaydb
- flyway-core
- 5.2.4
-
-
-
- com.fasterxml.jackson.dataformat
- jackson-dataformat-yaml
- 2.9.8
-
-
-
-
-
- junit
- junit
- 4.12
- test
-
-
-
-
-
- org.apache.kafka
- kafka_2.12
- 2.4.1
-
-
-
- org.apache.kafka
- kafka-clients
- 2.4.1
-
-
-
- org.apache.kafka
- kafka-streams
- 2.4.1
-
-
-
-
- org.jgrapht
- jgrapht-core
- 1.3.0
-
-
-
- org.jgrapht
- jgrapht-io
- 1.3.0
-
-
-
- me.xdrop
- fuzzywuzzy
- 1.2.0
-
-
-
-
- org.egov
- mdms-client
- 0.0.2-SNAPSHOT
-
-
-
- org.projectlombok
- lombok
- 1.18.2
- provided
-
-
- org.slf4j
- slf4j-api
- 1.7.25
-
-
-
-
-
-
-
- repo.egovernments.org
- eGov ERP Releases Repository
- https://nexus-repo.egovernments.org/nexus/content/repositories/releases/
-
-
- repo.egovernments.org.snapshots
- eGov ERP Releases Repository
- https://nexus-repo.egovernments.org/nexus/content/repositories/snapshots/
-
-
- repo.egovernments.org.public
- eGov Public Repository Group
- https://nexus-repo.egovernments.org/nexus/content/groups/public/
-
-
-
-
-
diff --git a/core-services/chatbot/src/main/java/org/egov/chat/ChatBot.java b/core-services/chatbot/src/main/java/org/egov/chat/ChatBot.java
deleted file mode 100644
index 9c42dc7c57b..00000000000
--- a/core-services/chatbot/src/main/java/org/egov/chat/ChatBot.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.egov.chat;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class ChatBot {
-
- public static void main(String args[]) {
- SpringApplication.run(ChatBot.class, args);
- }
-
-}
diff --git a/core-services/chatbot/src/main/java/org/egov/chat/RemoveTestData.java b/core-services/chatbot/src/main/java/org/egov/chat/RemoveTestData.java
deleted file mode 100644
index e5d8b64c5f3..00000000000
--- a/core-services/chatbot/src/main/java/org/egov/chat/RemoveTestData.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.egov.chat;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.jayway.jsonpath.DocumentContext;
-import com.jayway.jsonpath.JsonPath;
-import com.jayway.jsonpath.WriteContext;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
-
-import java.io.IOException;
-import java.util.List;
-
-@Slf4j
-@Controller
-@ConditionalOnProperty( value = "test.data.cleanup.enabled", havingValue = "true")
-public class RemoveTestData {
-
- @Autowired
- private JdbcTemplate jdbcTemplate;
- @Autowired
- private RestTemplate restTemplate;
- @Autowired
- private ObjectMapper objectMapper;
-
- @Value("${elasticsearch.host}")
- private String esHost;
- @Value("${elasticsearch.chatbot.messages.index.name}")
- private String indexName;
-
- private static String deleteConversationStateFromDBQuery = "DELETE FROM eg_chat_conversation_state WHERE user_id=?";
-
- private static String deleteFromElasticsearchByUserIdQuery = "{\"query\":{\"match\":{\"user.userId\":\"\"}}}";
-
- @RequestMapping(value = "/removetestdata", method = RequestMethod.POST)
- public ResponseEntity