Skip to content

hmcts/bulk-scan-processor

Repository files navigation

Bulk scan processor

Codacy Badge codecov Known Vulnerabilities

Purpose

Retrieve scanned documents along with information extracted with OCR engine. Store the images and let recipient services fetch the new data.

Getting Started

Prerequisites

  • JDK 21
  • Project requires Spring Boot v3.x to be present

Installation

  • Clone the repository
  • Ensure all required environment variables have been set.

Quick Start (Alternative)

An alternative faster way getting started is by using the automated setup script. This script will help set up all bulk scan/print repos including bulk-scan-processor and its dependencies. See common-dev-env-bsbp repository for more information. Once set up script has ran successfully you can move the bulk-scan-processor from the newly created common-dev-env-bsbp/apps directory to your desired location.

Building and deploying the application

The project uses Gradle as a build tool. It already contains ./gradlew wrapper script, so there's no need to install gradle.

Building the application

To build the project execute the following command:

  ./gradlew build

Running the application

You will either need to add a .env file if one does not already exist, or add environment variables to your Application tasks configuration.

If you choose to add a .env file, you will need to add all the environment variables listed in the application.yaml file.

For example, ${BULK_SCANNING_DB_PASSWORD:} in the application.yaml file will need to be added as BULK_SCANNING_DB_PASSWORD="value from keyvault" in your .env file.

Create the image of the application by executing the following command:

  ./gradlew assemble

Application listens on port 8581 which can be overridden by setting SERVER_PORT environment variable or from .env file.

The application depends upon certain components that are already up and running. Configuration details for each component can be changed by passing values in environment variables:

PostgreSQL

  • BULK_SCANNING_DB_HOST
  • BULK_SCANNING_DB_PORT
  • BULK_SCANNING_DB_NAME
  • BULK_SCANNING_DB_USER_NAME
  • BULK_SCANNING_DB_PASSWORD

Azure Blob Storage

  • STORAGE_ACCOUNT_NAME
  • STORAGE_KEY
  • SAS_TOKEN_VALIDITY

Document Management Storage

  • DOCUMENT_MANAGEMENT_URL working endpoint URL

Service to Service Authentication

  • S2S_URL working endpoint URL
  • S2S_NAME service name
  • S2S_SECRET service secret

Please find more details in infrastructure/main.tf file.

Running smoke tests

Smoke tests expect an address of deployed application to be passed in TEST_URL environment variable. For example:

  TEST_URL=http://localhost:8561 ./gradlew smoke

By default, it will use http://localhost:8581 which is defined in src/smokeTest/resources/application.yaml.

Running integration tests

  ./gradlew integration

Migration

To run migration gradle task expects FLYWAY_URL to be present. In case db requires username/password: FLYWAY_USER and FLYWAY_PASSWORD. Once those variables are exported all flyway tasks are available.

./gradlew flywayMigrate

License

This project is licensed under the MIT License - see the LICENSE file for details